在构建引用Razor类库的MVC应用程序时,我试图弄清楚如何解决MSB4062错误。重现它的步骤涉及创建一个新的MVC项目(运行“ dotnet new mvc”),创建一个新的Razor类库(运行“ dotnet new razorclasslib”)以及通过将以下内容添加到MVC应用程序中来添加类库。 csproj文件:
<ItemGroup>
<ProjectReference Include="..\Library\Library.csproj" />
</ItemGroup>
一旦我尝试编译项目(我正在使用Visual Studio Code),就会收到以下错误消息:
C:\ Program Files \ DotNET \ sdk \ NuGetFallbackFolder \ microsoft.aspnetcore.razor.design \ 2.1.2 \ build \ netstandard2.0 \ Microsoft.AspNetCore.Razor.Design.CodeGeneration.targets(69,5):错误MSB4062:无法从程序集C:\ Program Files \ DotNET \ sdk \ NuGetFallbackFolder \ microsoft.aspnetcore.razor.design \ 2.1.2 \ build \ netstandard2加载“ Microsoft.AspNetCore.Razor.Tasks.RazorTagHelper”任务.0 .... \ tasks \ netstandard2.0 \ Microsoft.AspNetCore.Razor.Tasks.dll。具有相同名称的程序集已经加载确认声明正确,程序集及其所有依赖项都可用,并且任务包含实现Microsoft.Build.Framework.ITask的公共类。 [C:\ Users \ userprofile \ Development \ Application \ Application.csproj]
真正奇怪的部分是,如果我然后删除csproj文件中的ProjectReference条目,则编译MVC应用程序(不带库),然后重新添加ProjectReference条目,整个项目(带库)都可以正常编译。但是,一旦我清理了MVC应用程序或库,错误就会再次出现。
答案 0 :(得分:0)
将以下内容添加到razor类库的csproj文件中可解决此问题:
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
默认情况下,应用程序的csproj文件中已经存在类似的引用...也许版本不匹配?