msbuild 在 projects.assets.json 中找不到引用



我有一个以.net标准2.0为目标的.net标准库项目,我正试图使用MSBuild在VSTS中构建它,因为安装了生成代理的生成服务器无法访问internet,所以我将依赖项复制到C:\users\username.nuget\packages文件夹中,但MSBuild失败;未找到Netsdk1064,软件包microsoft.csharp,版本4.3.0";。我已经尝试复制解决方案的packages文件夹上的依赖项,但现在仍在工作。我不能在构建服务器上使用Nuget还原,所以我想知道是否有一种方法可以重定向project.assets.json以查找我创建的文件夹?

您需要检查包Netsdk1064, Package microsoft.csharp是否在C:usersusername.nugetpackages folder中成功复制,因为它错误地表明找不到此包。

作为解决方法,您可以创建一个nuget.config文件并提交到您的repo。并在nuget.config文件的packageSources元素下添加所有包所在的本地目录。请参阅以下示例。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="local" value="C:usersusername.nugetpackages" />
</packageSources>
</configuration>

有关详细信息,请查看nuget.config的包源部分。

然后您可以使用nuget恢复任务来恢复包。并将nugetConfigPath点设置为上面创建的nuget.config。

- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: 'SmartFuel.sln'
feedsToUse: 'config'
nugetConfigPath: 'nuget.config'

如果nuget还原任务未能从本地包源进行还原。请检查管道中使用的nuget版本。如果nuget版本是4.1.0或更高版本。您需要使用NuGet Tool安装程序任务才能使用更高版本的NuGet。有关详细信息,请参阅此线程。

另一种可能的解决方法是编辑.csproj文件,并使用hintpath手动将引用的包指向本地文件夹中的.dll。例如:

<ItemGroup>
<Reference Include="DependPackage">
<HintPath>............packageDependPackage.dll</HintPath>
</Reference>
</ItemGroup> 

最新更新