我一直在尋找關於如何讓NuGet使用VS2015與GitLab自動恢復軟件包的幾天,而且我沒有運氣。NuGet包不會從VS2015與GitLab恢復
場景: 我從GitLab中克隆了一個空的存儲庫,並使用VS來添加默認的.gitignore和.getattribute文件。我使用.NET框架4.5.2創建了一個HelloWorld控制檯應用程序。我想自動遞增內部版本號,所以我安裝了MSBuild擴展包(在VS的NuGet控制檯中輸入「Install-Package MSBuild.Extension.Pack」)。這會修改CSPROJ文件。然後,我進一步修改了項目文件,以便在每個版本上更新構建版本號和修訂版號。項目文件的淨修改部分看起來是這樣的:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\MSBuild.Extension.Pack.1.8.0\build\net40\MSBuild.Extension.Pack.targets" Condition="Exists('..\packages\MSBuild.Extension.Pack.1.8.0\build\net40\MSBuild.Extension.Pack.targets')" />
<Import Project="$(MSBuildProjectDirectory)\..\packages\MSBuild.Extension.Pack.1.8.0\tools\net40\MSBuild.ExtensionPack.VersionNumber.targets" />
<Target Name="BeforeBuild" Condition="'$(Configuration)' == 'Release'">
<AssemblyInfo AssemblyInfoFiles="@(AssemblyInfoFiles)" />
</Target>
<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\MSBuild.Extension.Pack.1.8.0\build\net40\MSBuild.Extension.Pack.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSBuild.Extension.Pack.1.8.0\build\net40\MSBuild.Extension.Pack.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
所以我蓋了,它的表現不如預期,我檢查所有在另一臺機器上,我克隆存儲庫並打開該解決方案。該項目不會加載,VS也不會嘗試恢復任何內容;這是錯誤:
C:\Users\mwoodard\Source\Repos\c-sharp-commons\HelloConsole\HelloConsole\HelloConsole.csproj : error : The imported project "C:\Users\mwoodard\Source\Repos\c-sharp-commons\HelloConsole\packages\MSBuild.Extension.Pack.1.8.0\tools\net40\MSBuild.ExtensionPack.VersionNumber.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. C:\Users\mwoodard\Source\Repos\c-sharp-commons\HelloConsole\HelloConsole\HelloConsole.csproj
我看到很多具有的NuGet恢復問題的其他人,和很多的解決方案,但沒有人似乎屬於第一次被使用VS2015開工項目。 (有許多解決方案說,要改變項目或解決方案的.nuget子目錄中的內容... VS2015不會創建這樣的目錄。)
最重要的是,NuGet還原需要在MSBuild中工作,因爲我們的構建機器不會運行Visual Studio。
謝謝,解決方案工作。您更正的行是在我安裝MSBuild擴展包時由NuGet添加的。順便說一下,這並不是說我不會使用.nuget文件夾,它不是由VS2015爲我創建的,而且我沒有文件來填充它。 –