我在Windows 8上的Visual Studio 2012中创建了一个Windows窗体应用程序,目标.NET框架是4.5,我想使用Windows SDK的Datagramsocket库,因此我在编译时将目标操作系统版本更改为8.
我收到以下错误:
"错误1类型'System.IDisposable'在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用."
Nat*_*han 31
如果您的目标是Windows 8,则MSDN文档包含以下说明:
也就是说,在您使用一个基本参考准备项目之前,您的桌面应用程序不能消耗Windows运行时的任何内容.Windows运行时定义了一些标准类和接口
System.Runtime
,例如IEnumerable
,在整个Windows运行时库中使用.默认情况下,您的托管桌面应用程序将无法找到这些类型,因此您必须手动引用System.Runtime,然后才能对Windows运行时类执行任何有意义的操作.要创建此手册参考:
- 在解决方案资源管理器中导航到托管桌面应用程序项目.
- 右键单击"引用"节点,然后单击"添加引用".
- 单击"浏览"选项卡.
- 单击"浏览...".
- 导航到System.Runtime.dll外观.您通常可以在类似于以下的路径中找到它:
%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\System.Runtime.dll
希望有所帮助.
Jos*_*osh 19
如果您遇到4.5.2和Unity的此问题,Microsoft已发布修复,知识库文章:http: //support.microsoft.com/kb/2971005
您的应用程序似乎正在尝试加载System.Runtime
版本 4.0,但您尚未安装该版本。您说您已经安装了.NET 4.5,因此您可以提供一些配置来在运行时重定向程序集绑定。
尝试将其添加到您的App.config
或Web.config
文件中:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" />
<bindingRedirect oldVersion="4.0.0.0" newVersion="4.5.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
我还没有测试过这个确切的场景,但这个配置在类似的情况下对我有帮助。
归档时间: |
|
查看次数: |
21732 次 |
最近记录: |