我在我的VSTO项目中收到一个奇怪的错误,其中一个XAML文件在无关代码中导致生成错误。添加一个WPF命名空间会导致VSTO编译错误
这里是我做过什么
创建新的Excel 2010加载项项目(这里命名TestAddIn)
修改
ThisAddIn_Startup
阅读private void ThisAddIn_Startup(object sender, System.EventArgs e) { Worksheet w = Globals.ThisAddIn.Application.Workbooks[1].Sheets[1]; w.Rows[1].Font.Bold = true; }
构建项目。构建应该成功。
将WPF用户控件添加为项目的新项目。您还需要添加
System.Xaml
作为项目参考。再次构建项目。构建应该成功。
修改UserControl1.xaml阅读
<UserControl x:Class="TestAddIn.UserControl1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Test="clr-namespace:TestAddIn" <!-- Add this line --> > <Grid> </Grid> </UserControl>
构建项目。生成失败,错误消息
“对象”不包含“字体”的定义和没有扩展方法“字体”接受类型“对象”的第一个参数可以找到(是否缺少using指令或程序集引用?)
移除或添加在UserControl1.xaml命名空间行将导致构建成功或失败。
我真的被这个迷惑,因为WPF文件有没有直接关系的加载项文件。我想必须有一个链接问题?
我知道我可以只是在做显式转换(((Range)w.Rows[1]).Font.Bold = true
)解决这个问题。但我并不是真的想在这个地方做到这一点。
我该如何解决这个问题,以便在我的VSTO项目中有一个WPF文件?
我正在使用Visual Studio 2013,并刚刚遇到此问题。在我的情况下,如果没有这个解决方案,它会迫使我强制引用所有引用Interop的变量。所以谢谢! – 2015-06-05 18:30:59