我创建了空WebAPI项目并将项目签入TFS。我在构建时遇到以下错误:
错误:此项目引用了缺少的NuGet包 这台电脑。使用NuGet Package Restore下载它们。更多 信息,请参阅http://go.microsoft.com/fwlink/?LinkID=322105。该 遗失的文件是 .. \包\ Microsoft.Net.Compilers.1.0.0 \建立\ Microsoft.Net.Compilers.props。
然后我按照前面关于同一错误的主题中的建议从.csproj文件中删除了以下块:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props'))" />
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
</Target>
从.csproj中删除此xml部件后,TFS构建成功构建。我想了解为什么Visual Studio 2015在.csproj中添加目标部分会导致TFS构建失败。
答案 0 :(得分:1)
Microsoft.Net.Compilers包和NuGet添加了那些Props导入。
包(从1.1.1开始)包含一组MSBuild属性,开发人员建议您的项目必须确保它可以按照它们的方式进行编译。
要确保在构建项目时将这些属性导入MSBuild,请在程序包安装期间编辑csproj文件,以包括检查它们是否存在,或引发错误。
通常在构建期间没有恢复NuGet包时会看到错误,如果查看“错误”条件中的路径,那么Microsoft.Net.Compilers.1.0.0
文件夹是否存在?
有时,当您升级软件包(比如说1.1.1)并且导入到错误的路径时会发生这种情况。