Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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# 在某些计算机上生成时,不会添加对Microsoft.Bcl修补库(System.Runtime等)的引用_C#_Visual Studio_Visual Studio 2015_Msbuild_.net 4.0 - Fatal编程技术网

C# 在某些计算机上生成时,不会添加对Microsoft.Bcl修补库(System.Runtime等)的引用

C# 在某些计算机上生成时,不会添加对Microsoft.Bcl修补库(System.Runtime等)的引用,c#,visual-studio,visual-studio-2015,msbuild,.net-4.0,C#,Visual Studio,Visual Studio 2015,Msbuild,.net 4.0,我们最近使用NuGet将Microsoft.Bcl.Async添加到我们的解决方案中 这在两台机器上运行完全正常。但是,在两台不同的计算机上,编译的程序集缺少对Microsoft.Bcl(System.Runtime、System.IO等)附带的修补的.NET程序集的引用。所有机器都运行Visual Studio 2015。这些引用在项目文件和Visual Studio中都是可见的,只是没有编译到程序集中(我为此编写了一个小工具,从Assembly.GetReferencedAssemblys查

我们最近使用NuGet将Microsoft.Bcl.Async添加到我们的解决方案中

这在两台机器上运行完全正常。但是,在两台不同的计算机上,编译的程序集缺少对Microsoft.Bcl(System.Runtime、System.IO等)附带的修补的.NET程序集的引用。所有机器都运行Visual Studio 2015。这些引用在项目文件和Visual Studio中都是可见的,只是没有编译到程序集中(我为此编写了一个小工具,从Assembly.GetReferencedAssemblys查询结果)

如果我在Windows XP上运行由一台“坏”计算机编译的二进制文件,它就不起作用,因为实际上不包括Microsoft.Bcl

我们已经尝试在新的工作区中获取新副本,甚至重新安装VisualStudio,但构建仍然失败

编辑: 我在构建输出中发现以下行:

16>CSC : warning CS1685: The predefined type 'INotifyCompletion' is defined in multiple assemblies in the global alias; using definition from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
16>CSC : warning CS1685: The predefined type 'IAsyncStateMachine' is defined in multiple assemblies in the global alias; using definition from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
16>CSC : warning CS1685: The predefined type 'AsyncTaskMethodBuilder<TResult>' is defined in multiple assemblies in the global alias; using definition from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
16>CSC : warning CS1685: The predefined type 'ICriticalNotifyCompletion' is defined in multiple assemblies in the global alias; using definition from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
16>CSC : warning CS1685: The predefined type 'AsyncTaskMethodBuilder' is defined in multiple assemblies in the global alias; using definition from 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
16>CSC:warning CS1685:预定义类型“INotifyCompletion”在全局别名的多个程序集中定义;使用“mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”中的定义
16> CSC:警告CS1685:预定义类型“IAsyncStateMachine”在全局别名中的多个程序集中定义;使用“mscorlib,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”中的定义
16> CSC:警告CS1685:预定义类型“AsyncTaskMethodBuilder”在全局别名的多个程序集中定义;使用“mscorlib,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”中的定义
16> CSC:警告CS1685:预定义类型“ICriticalNotifyCompletion”在全局别名的多个程序集中定义;使用“mscorlib,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”中的定义
16> CSC:警告CS1685:预定义类型“AsyncTaskMethodBuilder”在全局别名的多个程序集中定义;使用“mscorlib,版本=4.0.0.0,区域性=中性,PublicKeyToken=b77a5c561934e089”中的定义

我还不太确定如何解决这个问题,因此非常感谢您的帮助,但我认为,这可能是我面临的问题。

好吧,我想问题自行解决了。“坏了”在卸载所有与.NET相关的内容并重新安装Visual Studio之后,计算机1显然没有损坏,神奇地不再损坏,而计算机2现在已经修复


我现在无法正确诊断此问题的根源,这有点令人失望,但我只能忍受它。

最终,我怀疑很难获得任何官方支持来帮助解决此问题:Windows XP已经过时,.NET 4.0已经过时,Visual Studio 2015已经过时(但更新3在2020年10月13日之前具有主流支持,并在2025年之前具有扩展支持)My crystal ball表示,“损坏”的计算机使用了错误的引用程序集。这些程序集来自c:\windows\microsoft.net,而不是c:\program files(x86)\引用程序集。所以实际上不要以.NET4为目标。0@HansPassant不,事实并非如此。但是,我自己在查看构建输出后发现了一些有趣的东西。我将更新这个问题。直到版本4.5,INotifyCompletion和friends才添加到mscorlib。错误的引用程序集。@HansPassant是的,这也是som这件事把我甩了。但我该如何解决这个问题呢?很高兴知道你已经解决了这个问题。请标出你的答案,这对其他有同样问题的社区是有益的。