Visual Studio C# 项目的 System 引用有感叹号

作者:vkvi 来源:ITPOW(原创) 日期:2021-1-26

Visual Studio 打开 C# 项目,看到 System、System.Data、System.IO 这些内部引用,前面有个感叹号。

Visual Studio C# 项目的 System 引用有感叹号

同时编译时提示:

这台计算机上缺少此项目引用的 NuGet 程序包。
使用“NuGet 程序包还原”可下载这些程序包。
有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。 
缺少的文件是 ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0
\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props。

按照Visual Studio TFS 协作开发时,缺少 NuGet 的包引用一文的处理方式,也无效。

我又去 NuGet 为其安装了 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 这个包,我以为解决了,哪知故障依旧(也许是因为我的版本和它要求的不一致)

后来解决办法居然是:打开 .csproj 文件,删除下面的内容:

  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0
    \build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')"
    Text="$([System.String]::Format('$(ErrorText)', 
    '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0
    \build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
  </Target>

因为我根本不需要这个包,所以我前面 NuGet 安装后,还将其卸载了,也可以运行。

相关文章