我如何知道NuGet放置工具的位置?

时间:2018-02-06 08:49:17

标签: c# nuget portability grpc

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

所以我将Grpc.Tools作为NuGet包添加到项目中。然后,工具将下载到解决方案的for j in range (0,375): for decale in range (250): diff=M[749+decale][j]-M[749+decale+1][j] if diff>=3: M[749+decale][j]-=floor(19*diff/20) M[749+decale+1][j]+=floor(19*diff/20) for j in range (625,1000): #for the S-W of the bay for decale in range (250): diff=M[749+decale][j]-M[749+decale+1][j] if diff>=3: M[749+decale][j]-=floor(19*diff/20) M[749+decale+1][j]+=floor(19*diff/20) for i in range (800,1000): for decale in range (799): For the West of the bay diff=M[i][200+decale]-M[i][200+decale+1] if diff>=3: M[i][200+decale]-=floor(19*diff/20) M[i][200+decale+1]+=floor(19*diff/20) for decale in range (799): #Idem diff=M[i][799-decale]-M[i][799-decale-1] if diff>=3: M[i][799-decale]-=floor(19*diff/20) M[i][799-decale-1]+=floor(19*diff/20) for j in range (0,375): #Along the island for decale in range (350): diff=M[850-decale][j]-M[850-decale-1][j] if diff>=3: M[850-decale][j]-=floor(19*diff/20) M[850-decale-1][j]+=floor(19*diff/20) for j in range(625,1000): #Idem for decale in range (350): diff=M[850-decale][j]-M[850-decale-1][j] if diff>=3: M[850-decale][j]-=floor(19*diff/20) M[850-decale-1][j]+=floor(19*diff/20) for i in range (500,549): #Idem for decale in range (500): diff=M[i][499+decale]-M[i][499+decale+1] if diff>=3: M[i][499+decale]-=floor(19*diff/20) M[i][499+decale+1]+=floor(19*diff/20) for decale in range (500): #Idem diff=M[i][500-decale]-M[i][500-decale-1] if diff>=3: M[i][500-decale]-=floor(19*diff/20) M[i][500-decale-1]+=floor(19*diff/20) return M 文件夹中:packages

另一方面,我们的CI服务器使用linux docker容器(packages/Grpc.Tools.1.6.1/windows_x86/protoc.exe)。是否有可移植的方法来指定在哪里找到protoc编译器?我想问一下系统:microsoft/dotnet或其他什么。

1 个答案:

答案 0 :(得分:0)

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

但是,如果您想从解决方案中执行构建后事件,您可能会发现它非常有用吗?如果你正在使用jenkins等人,并且有一个单独的包装步骤,那么上面应该可以正常工作。

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

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