我有一个带有一些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
或其他什么。
答案 0 :(得分:0)
我遇到了类似的问题,在我的情况下,我想使用随附的ExcelDNA工具打包C#代码。 post build事件是作为软件包安装的一部分添加的,但正如您所说,依赖于解决方案文件夹中的软件包文件夹。将代码移植到Net Standard我们意识到新版本的nuget无法处理这个特定的后期构建事件问题,这些问题要求包工具位于相对于解决方案或项目的某个文件夹中。因此,要直接回答您的问题,请参阅here。
但是,如果您想从解决方案中执行构建后事件,您可能会发现它非常有用吗?如果你正在使用jenkins等人,并且有一个单独的包装步骤,那么上面应该可以正常工作。
有几种方法可以解决它。最简单的是,您可以将工具添加到源代码控制,然后手动编辑构建后事件。取决于你对此的看法。
其次,您可以强制nuget在本地重新定位包,而不是在系统范围的缓存文件夹中。您可以通过Nuget.Config文件执行此操作。我没有掌握具体细节,但如果你无法理解,我可以查看我的旧代码。