在程序集名称中创建具有特殊字符的 NuGet 包

Create NuGet Package with Special Character in Assembly Name

我有一个包含 C++ 代码的项目,它创建了一个名称如下的程序集:"C++Adapter.dll"。由于程序集名称中的“++”,我无法创建正确的 NuGet 包。当我 运行 nuget pack 命令行时,它会创建一个包,但程序集名称发生了某种变化,看起来像这样:"C%2B%%2B%Adapter.dll"。有解决办法吗?

这是我的 .nuspec 文件的样子:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
  </metadata>
  <files>
    <file src="..\bin\*.dll" exclude="**\*.pdb;**\*.dll.metagen" target="MyFolder" />
  </files>
</package>

此线程向我指出了一个解决方法: nuget encodes the blank spaces in names of files

就我而言,我使用 7-Zip 解压 NuGet 包。那是文件名弄乱的时候。我 运行 下面的命令有效(我用 NuGet.exe v4.4.1 测试过)。

nuget.exe install MyPackage -OutputDirectory C:\test

此命令的作用是下载包并将其解压缩到输出目录中。