Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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# 程序集的类型是用旧版本的混合SDK构建的,在Windows演示文凭基金会4项目中不支持_C#_Wpf_Visual Studio_Blend - Fatal编程技术网

C# 程序集的类型是用旧版本的混合SDK构建的,在Windows演示文凭基金会4项目中不支持

C# 程序集的类型是用旧版本的混合SDK构建的,在Windows演示文凭基金会4项目中不支持,c#,wpf,visual-studio,blend,C#,Wpf,Visual Studio,Blend,我在VS 2013中创建了一个WPF项目。升级到VS 2015后,从Blend SDK派生的类型的设计器中显示此错误: 来自程序集的类型是使用旧版本的blend sdk和 在Windows演示文稿基础4项目中不受支持 您可以通过手动更改.sln和.csproj文件中的版本号来解决此问题 In.csproj和.csproj.user 将ToolsVersion更改为当前的Visual Studio版本。VS 2013为版本12,VS 2015为版本14 在.sln中,将VisualStudioVe

我在VS 2013中创建了一个WPF项目。升级到VS 2015后,从Blend SDK派生的类型的设计器中显示此错误:

来自程序集的类型是使用旧版本的blend sdk和 在Windows演示文稿基础4项目

中不受支持
您可以通过手动更改.sln和.csproj文件中的版本号来解决此问题

In.csproj和.csproj.user 将
ToolsVersion
更改为当前的Visual Studio版本。VS 2013为版本12,VS 2015为版本14

在.sln中,将VisualStudioVersion更改为当前版本,您可以在“关于”窗口中找到它

同时将Microsoft Visual Studio解决方案文件的格式版本更改为当前版本(如14.00、12.00)

注意:这仅适用于内置程序集。如果外部依赖项(如Prism)导致此错误,则必须使用新的Blend SDK重新编译它们。您还可以尝试更新依赖项,可能最新版本已经使用最新的Blend SDK编译

  • 以管理员身份运行命令提示符

  • 将目录更改为Blend SDK:
    cd C:\Program Files(x86)\Microsoft SDK\Expression\Blend\.NETFramework\v4.5\Libraries\

  • 注册DLL:
    gacutil-i System.Windows.Interactivity.DLL

  • 重新启动Visual Studio


  • 参考资料:

    只有Microsoft Visual Studio解决方案文件,格式版本更改为14.00对我有效。

    这里的其他答案都对我无效。最终解决的问题是删除SDK文件夹中文件的.NET v4.0版本:

    C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0\Libraries\
    

    我通过NuGet引用了v4.5文件,但似乎设计者在上面的文件夹中找到了该文件。v4.0文件未在GAC中注册。

    在使用Visual Studio 2017时遇到类似问题,但上面的答案都不能完全解决我的问题。找到了一个Microsoft开发人员社区,该社区提供了解决方案。Bran Hagger的评论建议从解决方案目录中删除
    .vs
    文件夹。此附加步骤清除了缓存,并导致Visual Studio重新生成缓存

    这也可能是因为您混合了不同版本的
    System.Windows.Interactivity.dll
    ,特别是如果您是从nuget获得SDK,其中有几个不同的软件包提供SDK,例如:


    在这种情况下,您必须在项目之间同步这些库。

    流行的答案是有效的,但由于开发人员世界的情况总是在变化,我想我应该注意到现在有一个(IMO)更好的解决方案

    2018年12月,微软为WPF的XAML行为发布了一个官方的、开源的、受支持的NuGet包。(UWP有一个单独的软件包。)迁移到这个软件包非常容易。您需要卸载当前的NuGet包,删除几个引用,安装此包,并更改using语句(或FQN)

    我在这个答案中读到了这一点,所以这一点值得赞扬:


    删除解决方案文件夹中的.vs文件解决了问题。这个问题发生在我更新Visual Studio 2017并打开之前使用较旧版本的Visual Studio 2017构建的项目之后

    我在使用Prism库的“InteractionRequestTrigger”机制时也有同样的错误。不幸的是,这里提供的解决方案没有帮助。@tmatuschek此解决方案仅适用于内置类型。我相信您的Prism dll是使用旧版本的SDK构建的。要消除此错误,您需要一个使用新版SDK(使用Visual Studio 2015)构建的Prism dll。也许可以尝试下载Prism dll的最新版本。谢谢回复。我认为你的假设是正确的,我需要一个新版本的Prism,它是用正确版本的Blend SDK构建的。不幸的是,我已经在使用最新版本的Prism libs(6.0.1)。我在Prism github上发布了一个问题。我只是想在这里评论一下,如果有其他人在这里有同样的问题。是的,当然,我想我已经这样做了!这里是:这也不适用于在同一程序集中定义的自定义行为。它实际上只适用于Microsoft.Expression.Interactions中定义的混合行为您当时使用的是哪个版本的Visual Studio?对我有效。非常感谢你!我想你可以澄清这是开发者对VS的cmd提示,不是通用的Windows One您也可以通过从Microsoft下载最新的NuGet软件包来解决此问题:从软件包管理器控制台使用
    安装软件包表达式.Blend.Sdk.WPF
    。@Alex-这并没有为我解决此问题。如果您有Visual Studio 2015,请使用“Developer Command Prompt for VS2015”而不是常规的cmd安装@HristoYankov,FWIW,NuGet软件包适合我。:-)谢谢你,用你救了我的命DI没有删除它,只是重命名了它