【问题标题】:How do I know where NuGet puts my tools?我如何知道 NuGet 将我的工具放在哪里?
【发布时间】:2018-02-06 19:14:03
【问题描述】:

我有一个包含一些 protobuf 文件的项目。我想将这些文件编译为 C# 作为预构建步骤。

所以我将Grpc.Tools 作为 NuGet 包添加到项目中。瞧,这些工具已下载到解决方案的 packages 文件夹中:packages/Grpc.Tools.1.6.1/windows_x86/protoc.exe

另一方面,我们的 CI 服务器使用 linux docker 容器 (microsoft/dotnet)。是否有一种可移植的方式来指定在哪里可以找到 protoc 编译器?最好直接问系统:dotnet where Grpc.Tools什么的。

【问题讨论】:

    标签: c# nuget portability grpc


    【解决方案1】:

    我遇到了类似的问题,在我的情况下,我想使用包附带的 ExcelDNA 工具来打包 C# 代码。如您所说,构建后事件是作为软件包安装的一部分添加的,但取决于位于解决方案文件夹中的软件包文件夹。将代码移植到 Net Standard,我们意识到新版本的 nuget 无法处理构建后事件的这一特定问题,这些事件要求包工具位于与解决方案或项目相关的某个文件夹中。因此,要直接回答您的问题,请参阅here

    但是,如果您想从解决方案中进行构建后事件,您可能会觉得这不是很有用?如果您使用的是 jenkins et al 并且有单独的包装步骤,那么上述应该可以正常工作。

    有几种方法可以绕过它。最简单的是,您可以将工具添加到源代码管理,然后手动编辑构建后事件。取决于你对此的感觉。

    其次,您可以强制 nuget 在本地重新放置包,而不是在系统范围的缓存文件夹中。您可以通过Nuget.Config 文件执行此操作。我手头没有具体细节,但如果您无法弄清楚,我可以查看我的旧代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多