我在一堆.NET Framework项目的解决方案中构建了一个ASP.NET Core项目(目标框架为.NET Framework 4.5.2)。我引用了一个使用StyleCop.MsBuild的项目。但是,当我执行dotnet build
时,我得到了:
C:\MySolution\nupkgs\StyleCop.MSBuild.4.7.54.0\build\StyleCop.MSBuild.Targets(101,5): error MSB4062: The "StyleCopTask" task could not be loaded from the assembly
C:\MySolution\nupkgs\StyleCop.MSBuild.4.7.54.0\build\..\tools\StyleCop.dll. Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its
dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [
C:\MySolution\src\MyProject\MyProject.csproj]
MyProject
是我试图引用的项目。
我尝试将System.Windows.Forms
作为依赖项,但它的版本是4.0.0.0而不是2.0.0.0,因此似乎无法正常工作。
无论如何都要参考System.Windows.Forms
来构建它吗?
答案 0 :(得分:1)
我尝试安装Nuget软件包,消息是它与.net核心不兼容。
我的猜测是,stylecop尚未移植到.net核心。
.net核心和.net不一定相互兼容。
答案 1 :(得分:1)
正如@lionnnn在回答中所说,StyleCop从4.7.55开始是not yet supported on .NET Core。
我能够通过将项目本身所需的文件直接包含在链接中来解决这个问题:
的.csproj:
<Compile Include="..\MyProject\MyFile.cs">
<Link>MyProject\%(FileName)%(Extension)</Link>
</Compile>
这将所需的文件编译到我的项目中,而不会带来所有依赖项。不是最好的解决方案,但这种解决方法可以满足我的需求。