我们有一个.net完整框架WPF应用程序,我们已经从.net 4.6.2移动到4.7.1,同时更改为csproj文件中的PackageReference而不是packages.config.
在开发机器上构建似乎很好并且下载和恢复了包,但是当我们使用Jenkins构建我们的Windows Server 2012构建服务器时,nuget包似乎无法正确恢复.
我们使用MSBuild v15.5和最新的"msbuild/restore"命令在构建时恢复软件包.注意:使用以前调用"nuget restore"的方法确实有效,但我们现在应该能够使用msbuild/restore.
包恢复过程似乎正在查看正确的NuGet服务器,并且看起来没有错误地进行恢复(这是在Jenkins上编译的测试解决方案以隔离问题):
Restore:
Restoring packages for c:\Jenkins\workspace\Test\ConsoleApp1\ConsoleApp1.csproj...
Committing restore...
Generating MSBuild file c:\Jenkins\workspace\Test\ConsoleApp1\obj\ConsoleApp1.csproj.nuget.g.props.
Generating MSBuild file c:\Jenkins\workspace\Test\ConsoleApp1\obj\ConsoleApp1.csproj.nuget.g.targets.
Writing lock file to disk. Path: c:\Jenkins\workspace\Test\ConsoleApp1\obj\project.assets.json
Restore completed in 577.05 ms for c:\Jenkins\workspace\Test\ConsoleApp1\ConsoleApp1.csproj.
NuGet Config files used:
c:\Jenkins\workspace\Test\NuGet.Config
C:\Windows\system32\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config
Feeds used:
http://devbuild/NuGetHost/nuget
https://api.nuget.org/v3/index.json
Done Building Project "c:\Jenkins\workspace\Test\ConsoleApp1.sln" (Restore target(s)).
Run Code Online (Sandbox Code Playgroud)
但是当msbuild编译代码时,我们得到以下错误,看起来像NuGet还没有被下载:
CSC : error CS0006: Metadata file 'C:\Windows\system32\config\systemprofile\.nuget\packages\log4net\2.0.8\lib\net45-full\log4net.dll' …Run Code Online (Sandbox Code Playgroud) 我正在尝试使新的MSBuild NuGet恢复功能正常工作并遇到一个奇怪的问题.
如果我做:
msbuild.exe mySolution.sln /p:Configuration=Release
Run Code Online (Sandbox Code Playgroud)
我收到有关丢失包裹的错误.这是预期的行为.但是,如果我这样做:
msbuild.exe mySolution.sln /p:Configuration=Release /t:restore
Run Code Online (Sandbox Code Playgroud)
MSBuild"成功"但只是创建一个obj文件夹,其中包含一些与NuGet还原相关的文件,即没有bin\Release \文件夹.
为了恢复和构建,我必须发出上述两个命令(显然首先恢复).
我已升级所有packages.config文件以使用.csproj文件中的最新PackageReference.
有没有办法使用单个命令进行恢复和构建?
仅当项目仍在使用 packages.config 时,是否可以使用 MSBuild 在构建期间还原包?
我正在尝试从Jenkins服务器上的命令行构建.NET Core 2.1应用程序。
它在我的本地计算机(Windows 10,VS2017 Enterprise)上构建良好,并且如果我在运行Jenkins的服务器上手动构建它(手动签出git存储库并运行dotnet构建)。只有当我通过Docker容器中的Jenkins进行操作时,它才会失败。
错误:
/usr/share/dotnet/sdk/2.1.403/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(198,5): error NETSDK1064: Package Microsoft.CodeQuality.Analyzers, version 2.6.2 was not found. It might have been deleted since NuGet restore. Otherwise, NuGet restore might have only partially completed, which might have been due to maximum path length restrictions. [/var/lib/jenkins/jobs/pr-builder/jobs/cgi-api/branches/PR-18/workspace/API/API.csproj]
该软件包存在于中~/.nuget/packages/。
我知道我的Jenkinsfile目前有点怪异,但这与我试图使所有这些都起作用有关。似乎dotnet restore工作正常,但dotnet build无法找到这些文件。
我试过指定包目录(通过env var和dotnet restore --sources和)dotnet build --sources。
目前,我几乎可以想到的任何东西都附有,但是如果我忘记了什么,请告诉。我现在很迷路。
我的Jenkinsfile:
pipeline {
agent {
docker {
image 'microsoft/dotnet:2.1-sdk'
}
}
environment {
HOME = …Run Code Online (Sandbox Code Playgroud)