Could not load file or assembly 'System.Security.Principal.Windows'
C#asp.netC# Problem Overview
Solution has compiled successfully, but after I added an existing class file to the project, this error appeared:
> The specified task executable "csc.exe" could not be run. Could not > load file or assembly 'System.Security.Principal.Windows, > Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or > one of its dependencies. The system cannot find the file > specified. MvcApplicationRegister
I installed System.Security.Principal.Windows
package By NuGet, but error still appears.
C# Solutions
Solution 1 - C#
None of the previous answers worked for me.
The problem was that I didn't have the .NET Compiler Platform SDK installed.
To solve, open Visual Studio Installer, choose "Modify", and under the "Invididual Component" tab, check the .NET Compiler Platform SDK, and confirm your changes by clicking "Modify".
After I installed it and reopened Visual Studio, the problem is gone.
Solution 2 - C#
I had the same issue after I upgraded Microsoft.Net.Compiler from 2.8.2 to 2.9.0. After I downgraded to 2.8.2 projects compiled without any errors.
Solution 3 - C#
Had this same issue and resolved it.
In a 3 project solution MVC controller (Web,Business,Data)
Caused by the Microsoft.Net.Compiler 2.9.0 being installed on the Web project but not the other projects.
To resolve: Right click the solution. Manage NuGet Packages. Installed > Search for the compiler Ensure it is the same version and it is installed on all projects in your solution
Solution 4 - C#
If you are using Microsoft.CodeDom.Providers.DotNetCompilerPlatform
you can upgrade to 2.x and then remove Microsoft.Net.Compilers
as it's no longer needed. That solved it for me, however I couldn't even build the solution in the first place. It was still complaining about System.Security.Principal.Windows
though, I could also solve it by referencing System.Security
as an assembly. It's not recommended though.
Solution 5 - C#
Close down all instances of Visual Studio. Then reopen the solution and rebuild.
Solution 6 - C#
I uninstalled both Microsoft.CodeDom.Providers.DotNetCompilerPlatform
and Microsoft.Net.Compilers
and everything now works.
Solution 7 - C#
In my case I could go from Microsoft.Net.Compilers 2.4.0
to Microsoft.Net.Compilers 2.10.0
. No need to use Microsoft.Net.Compilers 2.8.2
.
Solution 8 - C#
I do not like removing packages without first understanding what I'm removing. I faced the same problem with my solution.
I discovered that 1 of the many projects was using the Microsoft.Net.Compilers NuGet package - let's call it Project ABC. A Unit Test project was referencing that Project ABC, but not the Microsoft.Net.Compilers NuGet package.
I simply referenced the Microsoft.Net.Compilers NuGet package from my Unit Test project, and the problem has now gone away.
Solution 9 - C#
Updating Microsoft.CodeDom.Providers.DotNetCompilerPlatform
and deleting Microsoft.Net.Compilers
worked for me.