C# 无法加载文件或程序集';System.Security.Principal.Windows';

C# 无法加载文件或程序集';System.Security.Principal.Windows';,c#,asp.net,C#,Asp.net,解决方案已成功编译,但在我将现有类文件添加到项目后,出现以下错误: 无法运行指定的任务可执行文件“csc.exe”。不能 加载文件或程序集'System.Security.Principal.Windows, 版本=4.0.1.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'或 它的一个依赖项。系统找不到该文件 明确规定。MVCAPpplicationRegister 我安装了NuGet提供的System.Security.Principal.Windows软件

解决方案已成功编译,但在我将现有类文件添加到项目后,出现以下错误:

无法运行指定的任务可执行文件“csc.exe”。不能 加载文件或程序集'System.Security.Principal.Windows, 版本=4.0.1.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a'或 它的一个依赖项。系统找不到该文件 明确规定。MVCAPpplicationRegister


我安装了NuGet提供的
System.Security.Principal.Windows
软件包,但仍然出现错误

将Microsoft.Net.Compiler从2.8.2升级到2.9.0后,我也遇到了同样的问题。
在我降级到2.8.2之后,编译的项目没有任何错误。

也有同样的问题并解决了它

在3个项目解决方案中,MVC控制器(Web、业务、数据)

由于Microsoft.Net.Compiler 2.9.0安装在Web项目上,而不是其他项目上

解决: 右键单击解决方案。 管理NuGet包。 已安装>搜索编译器 确保其版本相同,并且安装在解决方案中的所有项目上

安装后,我的解决方案成功构建

如果您使用的是
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
,则可以升级到2.x,然后将
Microsoft.Net.Compilers
作为。这为我解决了这个问题,但我甚至无法首先构建解决方案。它仍然在抱怨
System.Security.Principal.Windows
,不过,我也可以通过引用
System.Security
作为一个程序集来解决它。尽管如此。

我卸载了
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Microsoft.Net.Compilers
,现在一切都正常了。

在我的情况下,我可以从
Microsoft.Net.Compilers 2.4.0
转到
Microsoft.Net.Compilers 2.10.0
。无需使用
Microsoft.Net.Compilers 2.8.2

以前的答案对我都不适用

问题是我没有安装.NET编译器平台SDK

要解决此问题,请打开Visual Studio安装程序,选择“修改”,然后在“虚拟组件”选项卡下,检查.NET编译器平台SDK,并单击“修改”确认所做的更改


安装并重新打开Visual Studio后,问题就消失了。

更新
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
并删除
Microsoft.Net.Compilers
对我来说很有效。

关闭Visual Studio的所有实例。然后重新打开解决方案并重建。

我不喜欢在不了解要删除的内容的情况下删除包。我的解决方案也面临同样的问题

我发现许多项目中有一个使用的是Microsoft.Net.Compilers NuGet包,我们称之为Project ABC。单元测试项目引用的是该项目ABC,而不是Microsoft.Net.Compilers NuGet包


我只是引用了我的单元测试项目中的Microsoft.Net.Compilers NuGet包,现在问题已经解决了。

这个答案让我高兴极了!谢谢因为这也影响了我:“降级”意味着安装一个旧版本的Nuget软件包。这不是在VS安装应用程序中可以完成的事情。也可以考虑将所有项目更新到最新版本:谢谢!我这样做了——把它升级到以前的版本——然后重新构建我的解决方案,看看它是否有效。是的。然后我把它恢复到2.9.0,并再次尝试重建。这也奏效了。显然有些东西需要“重置”。没有更多问题,我又使用了最新版本。在我的例子中,将编译器从2.6.1升级到2.10.0 helpedI在一个解决方案中遇到了这个问题,其中一个项目有
Microsoft.Net.Compilers.1.3.2
,另一个项目有2.1.0。我通过nuget将这两个项目更新到
3.0.0
(当时最新的稳定版本)。然后编译了解决方案,没有错误。这似乎为我做到了。我不明白为什么这次失败是随机的。我只是希望这是真正修复它的方法。对我来说,问题是在我切换机器后开始的,我必须在新机器上设置环境。我确实检查了旧版本,它安装了.NET编译器平台SDK。一个细节:我的一位同事对此进行了检查,一切都很顺利。我必须检查我的并安装编译器SDK才能让东西正常工作。不确定这样做是否奏效,这样做并实际删除bin和obj文件夹是为了我。这是一个对我有效的方法,在“nuget restore”之前删除了Microsoft.Net.Compilers这对我来说是固定的,但原因是我发现删除所有包并允许nuget刷新是固定的,但当我这样做时,我无法删除此文件夹,因为它正在使用中(与代码分析有关)-packages\Microsoft.Net.Compilers.2.10.0\tools。所以我认为我的情况是,一些与代码分析有关的进程挂起(即使我没有启用它)可能会挂起,因此编译失败,因为这是因为我想重新启动Visual Studio会起作用,因为它会释放卡在该文件上的进程。(编辑:我正在使用Visual Studio 2017)在我们的构建服务器上,我们刚刚重新运行了构建。在没有任何改变的情况下,他们在第二次尝试的基础上进行了构建。很奇怪,但它起作用了。有人知道这个软件包是做什么的吗?为什么我的解决方案需要这个?
Microsoft.Net.Compilers
已被弃用