我正在编写一个部署应用程序来获取我的DLL,并为每个DLL创建.nuspec文件,将它们打包,然后推送到Artifactory。
尝试使用c#中的命令行来执行此操作。
我遇到的问题是DLL位于网络驱动器上,在文件位置调用nuget spec命令时会使用完整的文件路径作为PackageID,在尝试打包时会包含无效字符。
using (Process myProcess = new Process())
{
var file = @"\\network-drive\Network-Folder\MyDLLs\Test.dll";
myProcess.StartInfo.UseShellExecute = false;
myProcess.StartInfo.FileName = "CMD.exe";
myProcess.StartInfo.Arguments = string.Format("/c nuget spec \"{0}\"", file);
myProcess.StartInfo.CreateNoWindow = false;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess.Start();
myProcess.WaitForExit();
}这会导致
<?xml version="1.0"?>
<package >
<metadata>
<id>\\network-drive\Network-Folder\MyDLLs\Test.dll</id>
<version>1.0.0</version>
....如何将packageID指定为类似于My.TestDLL的内容?
我试着做一些像这样的事情
nuget spec My.TestDLL -AssemblyPath \\network-drive\Network-Folder\MyDLLs\Test.dll但是不知道nuspec文件放到了哪里,因为它不在目录中。
发布于 2020-05-06 07:28:21
您正在创建要使用的新命令行,然后将命令传递给它。考虑打开一个新的命令窗口。它的默认位置是哪里?
如果您尚未在环境变量中存储NuGet (假设),则必须指定NuGet.exe的完整路径,或者将工作目录设置为包含NuGet可执行文件的文件夹。由于您没有这样做,因此命令窗口将使用默认位置来创建该.nuspec文件。
我将为ProcessStartInfo对象设置工作目录。设置工作目录时,您指定了希望NuGet在光盘上创建文件的位置。
https://stackoverflow.com/questions/59395815
复制相似问题