【问题标题】:msbuild can't find references in projects.assets.jsonmsbuild 在 projects.assets.json 中找不到引用
【发布时间】:2020-07-08 11:54:09
【问题描述】:

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

【问题讨论】:

    标签: visual-studio azure-devops .net-standard


    【解决方案1】:

    您需要检查包Netsdk1064, Package microsoft.csharp是否成功复制到C:\users\username\.nuget\packages folder,因为它错误地找不到这个包。

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

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <packageSources>
            <add key="local" value="C:\users\username\.nuget\packages" />
        </packageSources>
    </configuration>
    

    查看 nuget.config 的 Package source sections 了解更多信息。

    然后您可以使用 nuget restore 任务来恢复包。并设置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 Installer task 来使用更高版本的nuget。请参阅this thread 了解更多信息。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 2011-09-20
      • 2013-05-27
      相关资源
      最近更新 更多