【发布时间】:2012-07-19 23:14:26
【问题描述】:
我在 VSTO 项目中遇到一个奇怪的错误,其中 XAML 文件导致无关代码中的构建错误。
这就是我所做的
创建一个新的 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> -
构建项目。构建失败并显示错误消息
“object”不包含“Font”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“Font”(您是否缺少 using 指令或程序集引用?)
在 UserControl1.xaml 中删除或添加命名空间行将导致构建成功或失败。
我对此感到非常困惑,因为 WPF 文件与加载项文件没有直接关系。我想肯定是链接问题?
我意识到我可以通过显式强制转换 (((Range)w.Rows[1]).Font.Bold = true) 来解决这个问题。但我真的不想到处这样做。
如何解决此问题,以便在我的 VSTO 项目中拥有 WPF 文件?
【问题讨论】:
-
我正在使用 Visual Studio 2013,刚刚遇到了这个问题。就我而言,如果没有这个解决方案,它会迫使我硬转换所有引用互操作的变量。所以谢谢你!
标签: c# wpf xaml namespaces vsto