【问题标题】:Specify PackageID for NuGet nuspec file为 NuGet nuspec 文件指定 PackageID
【发布时间】:2019-12-18 15:59:02
【问题描述】:

我正在编写一个部署应用程序来获取我的 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 文件去了哪里,因为它不在目录中。

【问题讨论】:

    标签: c# nuget nuspec nuget-spec


    【解决方案1】:

    您正在创建一个要使用的新命令行,然后将命令传递给它。考虑打开一个新的命令窗口。它默认在哪里?

    如果您尚未将 NuGet 存储在环境变量中(假设),则必须指定 NuGet.exe 的完整路径或将工作目录设置为具有 NuGet 可执行文件的文件夹。由于您没有这样做,因此命令窗口将使用默认位置来创建该 .nuspec 文件。

    我将为ProcessStartInfo 对象设置工作目录。设置工作目录时,您指定了 NuGet 在磁盘上创建文件的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 2015-08-17
      • 1970-01-01
      • 2019-04-18
      • 2014-03-10
      • 2014-12-02
      相关资源
      最近更新 更多