因为我在构建项目后尝试使用
csproj文件中的
..\
来重构路径
它仍然显示构建项目后所述的错误,这里是下面的错误。
我还有完整的 Microsoft.Net.Compilers.props 包,根据我在项目所在系统中检查的路径,这是下面的项目路径。
现在如果我放
..\
或不放它仍然找不到系统的路径这里是下面卸载.csproj文件后的代码。
<Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.8\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
<Import Project="..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
丢失的文件是 包\Microsoft.Net.Compilers.2.4.0 uild\Microsoft.Net.Compilers.props
首先,很高兴知道您已经自己解决了您的问题。
实际上,此目标节点来自 nuget 包中的文件
packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props
,当您安装 EnsureNuGetPackageBuildImports
nuget 包时,它会将一个名为 xxx.csproj
的目标添加到您的 Microsoft.Net.Compilers
文件中。
此外,由于您由于某些原因更改了该目标下的默认
<Error Condition="xxxx">
节点(可能将该项目从某处迁移到您的新代理中),nuget机制无法识别它,当您想要卸载该包时,节点无法自动删除,只能手动修改。
另外,MSBuild中的Error任务相当于根据一定的判断条件中断构造生成。 因此,在你当前的环境下,即如果你找不到指定的
Microsoft.Net.Compilers.props
文件,你就无法构建你的项目。
建议
1)所以要解决这个问题,你只需将条件编辑为
Microsoft.Net.Compilers.props
的正确路径即可。
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props')" xxxx />
2) 或者如果你的项目有很多这样的目标,我建议你可以先删除
xxx.csproj
文件中的这些目标,然后在update-package -reinstall
-->Tools
-->Nuget Package Manager
下运行Package Manager Console
。
这会根据当前环境重塑nuget包,还可以修复引用错误DLL的DLL地址等等。
这是一个典型的错误,当您添加包,然后为了优化,将它们添加到其他项目时,就会发生这种错误。然后,您删除这些软件包或将部分解决方案提供给没有这些软件包的同事。
不幸的是,当您删除它们时,路径并未从
csproj
中删除,因此请按照以下步骤操作:
打开
csproj
(或项目)
删除“Import Project=[...]
”路径和“<Error Condition="!Exists('..[...]
”
如果问题仍然存在,那就奇怪了。确保该项目中存在适当的包。