微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

types“System.IDisposable”在未引用的程序集中定义

我在Windows 8的Visual Studio 2012中创build了一个Windows窗体应用程序,目标.NET框架是4.5,我想使用Windows SDK的Datagramsocket库,所以我在编译时将目标操作系统版本更改为8。

我收到以下错误

错误1types'System.Idisposable'是在未引用的程序集中定义的,必须添加对程序集”System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“的引用。

C#挂钩Windows进程来检查debugging进程

无法在通用应用程序中引用System.Windows.Media.AudioFormat

输出到C#中的文本文件输出

如何configurationtoolstripdropdownbutton大小以匹配父级下拉button的大小?

托pipeC ++方法命名

如何检查一个小文本文件中的特定string

设置非Office文件的Windows文件属性

添加应用程序清单以确保在Windows XP,Vista和7上提升权限的可靠程度如何?

问题与Windows服务以编程方式重新启动自己

.NET WPF记住会话之间的窗口大小

如果您的目标是Windows 8,则MSDN文档具有以下说明:

也就是说,在使用一个必要的参考来准备项目之前,您的桌面应用程序不能从Windows运行时中消耗太多的东西。 Windows运行时在System.Runtime定义了一些标准类和接口,例如IEnumerable ,这些标准类和接口在整个Windows运行时库中使用。 认情况下,托管的桌面应用程序将无法找到这些类型,因此必须先手动引用System.Runtime才能对Windows运行时类执行任何有意义的操作。 要创建此手册参考:

解决方案资源管理器中导航到托管桌面应用程序项目。

右键单击“引用”节点,然后单击“添加引用”。

点击浏览标签

点击浏览…。

导航到System.Runtime.dll外观。 您通常可以找到类似于以下路径: %ProgramFiles(x86)%reference AssembliesMicrosoftFramework.NETFrameworkv4.5FacadesSystem.Runtime.dll

希望有所帮助。

如果遇到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>

我没有测试过这个确切的场景,但是这个配置在类似的情况下帮了我很大的忙。

在使用TFS构建代理时,我在下面看到这个错误,但只在安装了4.5.2的Windows 2012 R2服务器上。 我们的Visual Studio机器都没有编译错误

错误1类型'System.Idisposable'是在未引用的程序集中定义的,必须添加对程序集”System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“的引用。

其他人指出的原因与便携式图书馆有关,正如其他人指出的那样。 但至于解决方案一些建议在%ProgramFiles(x86)%reference AssembliesMicrosoftFramework.NETFrameworkv4.5FacadesSystem.Runtime.dll的System.Runtime.dll外观%ProgramFiles(x86)%reference AssembliesMicrosoftFramework.NETFrameworkv4.5FacadesSystem.Runtime.dll我不同意作为路径和版本可能在其他机器上不同。

相反,我发现的最好的解决方案是在生成机器上安装Windows SDK 。

在这里找到了一个来自这个帖子的解决方案,以及为什么会出现这个问题的一个非常明确的描述

在将Unity 4.0.1添加到以.NET Framework 4.6.1为目标的项目之后,我在TeamCity中出现了此错误消息。 我最终从C: Program Files(x86) Reference Assemblies Microsoft Framework.NETFramework中将缺少的文件夹从我的开发机器复制到构建服务器。 两者都在运行Windows 7.之后,构建成功。

我刚刚遇到了Windows 10,TeamCity和VS2015的这个问题:

症状:

Visual Studio可以很好地构建项目,但是TeamCity正在努力解决编译问题。

原因:

为现有解决方添加一个新项目 – 忘记更改TargetRuntimeVersion。

解:

卸载项目

编辑该项目的.csproj文件

更改:

<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>

无论你是其他项目,还是在服务器上安装的任何东西。

对我来说是这样的:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

希望这可以帮助其他任何人遇到这种情况。

正如Josh提到的,我在一个带有Web API项目和一些库项目的解决方案中遇到了这个问题,其中一个库项目正在构建,其中一个错误表示Unity属性不是“有效”属性,然后是一个错误所说The type 'System.Attribute' is defined in an assembly that is not referenced. You must add a reference to assembly System.Runtime. The type 'System.Attribute' is defined in an assembly that is not referenced. You must add a reference to assembly System.Runtime.

建议的“更新”4.5.2开发包是我已经安装,所以这并没有帮助我。 在一个预感,我想也许这只是一个版本不匹配。 所以我看了每个项目的属性,其中一个基本库的目标是4.5,而另一个目标是4.5.2。 我改变了那个也瞄准了4.5.2并且错误消失了。

我在VS 2015上的一些解决方案中遇到了这个问题,甚至在一个工作站上的解决方案中,却没有在另一个上。 将.NET版本更改为4.6后,出现错误

解决方案很简单: 关闭解决方案并删除解决方相同的文件中的隐藏的.vs文件夹。

添加其他答案中建议的缺少的引用也解决了这个问题,但即使再次删除引用,错误仍然得到解决

基于TFS 2015 Build server

我不知道这个错误信息是否是通用的,对于每个唯一的错误,答案/解决方案可能是唯一的。 但是我有类似的错误the type 'System.Idisposable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a' the type 'System.Idisposable' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime,PublicKeyToken=b03f5f7f11d50a3a'

我意识到,该项目使用Microsoft.Practices.Unity并具有实现Idisposable接口IUnityContainer 。 事实证明,没有配置TFS构建定义NuGet安装程序构建步骤,它负责还原TFS构建服务器上的Microsoft.Practices.Unity NuGet包。 如果遇到此错误,请检查您的TFS构建定义,并将NuGet安装程序构建步骤路径指向您的解决方案完整路径,包括。 sln扩展

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐