Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加WPF命名空间会导致VSF编译错误_C#_Wpf_Xaml_Namespaces_Vsto - Fatal编程技术网

C# 添加WPF命名空间会导致VSF编译错误

C# 添加WPF命名空间会导致VSF编译错误,c#,wpf,xaml,namespaces,vsto,C#,Wpf,Xaml,Namespaces,Vsto,我在VSTO项目中遇到了一个奇怪的错误,其中一个XAML文件在不相关的代码中导致生成错误 这就是我所做的 创建新的Excel 2010加载项项目(此处名为TestAddIn) 将此加载项启动修改为 private void ThisAddIn_Startup(object sender, System.EventArgs e) { Worksheet w = Globals.ThisAddIn.Application.Workbooks[1].Sheets[1]; w.Rows[

我在VSTO项目中遇到了一个奇怪的错误,其中一个XAML文件在不相关的代码中导致生成错误

这就是我所做的

  • 创建新的Excel 2010加载项项目(此处名为TestAddIn)

  • 将此加载项启动修改为

    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>
    

    尝试添加
    ;assembly=
    位于xmlns声明的末尾。像这样:

    xmlns:Test="clr-namespace:TestAddIn;assembly="
    

    我也遇到了这个问题,不知道根本原因是什么

    但是,如果名称空间是在不同于VSTO的程序集中定义的,我可以将名称空间添加到XAML文件中

    所以每次都会出现奇怪的施法错误:

    xmlns:helper="clr-namespace:MyVstoProject.Utility"
    
    但这很好:

    xmlns:helper="clr-namespace:ReferencedProject.Utility;assembly=SomeNonVstoAssembly"
    

    我找到了一种方法,可以让VS2012的用户使用它

  • 转到解决方案资源管理器->引用文件夹,选择对“Microsoft.Office.Interop.Excel”的引用
  • 在其属性中,将“嵌入互操作类型”设置为False并编译。错误仍然会出现。 现在再次将其设置为True并编译。瞧
    此错误已在VS2013(更新3)中修复。

    这似乎没有效果。我正在使用Visual Studio 2013,刚刚遇到此问题。在我的例子中,如果没有这个解决方案,它将迫使我强制转换引用互操作的所有变量。谢谢你!