如何定义msbuild查找包的位置?

如何定义msbuild查找包的位置?,msbuild,visual-studio-2017,nuget,Msbuild,Visual Studio 2017,Nuget,我正试图从命令行构建一个解决方案。这包括3个步骤: nuget安装 nuget还原 msbuild 我正在使用一个NuGet.Config文件来指定NuGet包被缓存到哪里,以及恢复的包被添加到哪里 命令nuget restore不起作用,除了“无法生成解决方案”之外,它也没有提供有用的错误消息。关于StackOverflow的另一个答案是,建议运行msbuild命令,查看错误是什么 似乎在msbuild期间找不到通过nuget安装的文件(或者显然是nuget restore)。这是来自msbu

我正试图从命令行构建一个解决方案。这包括3个步骤:

  • nuget安装
  • nuget还原
  • msbuild
  • 我正在使用一个
    NuGet.Config
    文件来指定NuGet包被缓存到哪里,以及恢复的包被添加到哪里

    命令
    nuget restore
    不起作用,除了“无法生成解决方案”之外,它也没有提供有用的错误消息。关于StackOverflow的另一个答案是,建议运行
    msbuild
    命令,查看错误是什么

    似乎在
    msbuild
    期间找不到通过
    nuget
    安装的文件(或者显然是
    nuget restore
    )。这是来自
    msbuild
    的每个程序集的日志,GAC中找到的程序集除外:

      Primary reference "NTRPRS.NLog.Slack".
    C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin\Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "NTRPRS.NLog.Slack". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [C:\Avesta\Services\Dashboard\src\Avesta.DashboardService.csproj]
              For SearchPath "{HintPathFromItem}".
              Considered "..\..\..\..\AppData\Roaming\NuGet\packages\NTRPRS.NLog.Slack.5.0.4\lib\net45\NTRPRS.NLog.Slack.dll", but it didn't exist.
              For SearchPath "{TargetFrameworkDirectory}".
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\NTRPRS.NLog.Slack.exe", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\NTRPRS.NLog.Slack.exe", but it didn't exist.
              For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.5,AssemblyFoldersEx}".
              Considered AssemblyFoldersEx locations.
              For SearchPath "{AssemblyFolders}".
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\NTRPRS.NLog.Slack.exe", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\130\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\130\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\130\NTRPRS.NLog.Slack.exe", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\NTRPRS.NLog.Slack.exe", but it didn't exist.
              Considered "C:\Program Files\IIS\Microsoft Web Deploy V3\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "C:\Program Files\IIS\Microsoft Web Deploy V3\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "C:\Program Files\IIS\Microsoft Web Deploy V3\NTRPRS.NLog.Slack.exe", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft SQL Server\140\SDK\Assemblies\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft SQL Server\140\SDK\Assemblies\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft SQL Server\140\SDK\Assemblies\NTRPRS.NLog.Slack.exe", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\NTRPRS.NLog.Slack.exe", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\140\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\140\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\140\NTRPRS.NLog.Slack.exe", but it didn't exist.
              For SearchPath "{GAC}".
              Considered "NTRPRS.NLog.Slack", which was not found in the GAC.
              For SearchPath "{RawFileName}".
              Considered treating "NTRPRS.NLog.Slack" as a file name, but it didn't exist.
              For SearchPath "bin\Debug\".
              Considered "bin\Debug\NTRPRS.NLog.Slack.winmd", but it didn't exist.
              Considered "bin\Debug\NTRPRS.NLog.Slack.dll", but it didn't exist.
              Considered "bin\Debug\NTRPRS.NLog.Slack.exe", but it didn't exist.
    
    如何将nuget安装的程序集指定给msbuild?也。。。。为什么nuget还原失败?我从
    nuget restore
    得到的消息是:

    C:\<path>\src>nuget restore
    Error parsing solution file at C:\<path>\src\<name>.sln: Exception has been thrown by the target of an invocation.
    The project file could not be loaded. Could not load file or assembly 'System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.
    The system cannot find the file specified.  C:\<path>\src\<name>.sln
    

    就我所知,nuget错误输出是完全没有意义的。绝对路径
    C:\\src\.sln
    绝对存在。

    这是一个仅在Visual Studio/MSBuild的15.7.0之后才出现的问题

    NuGet已存在此问题的未决问题:


    当前的解决方法是安装.NET 4.7.1,直到问题得到解决,因为这将在全局程序集缓存中安装丢失的库。

    表示无法加载系统dll的异常使我认为这是安装问题。你能试着修复你的VS安装吗?谢谢。在我发布了一个问题之后,我想知道构建中的错误和nuget restore中的错误是否完全无关
    MSBuild auto-detection: using msbuild version '15.7.177.53362' from 'C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\bin'.