NuGet 包包含具有特殊字符的文件

NuGet package includes file with special characters

我目前正在从 ASP.NET MVC(从现在开始称为 "Library")项目创建一个 NuGet 包,以用作一些更高级 ASP.NET 的基础MVC 项目。

我的 "Library" 项目使用 bootstrap.chosen NuGet 包,其中包括一个名为 chosen-sprite.png 的文件和一个名为 chosen-sprite@2x.png 的文件。

虽然第一个文件(没有 @)没有包含在 NuGet 包中(如预期的那样),但第二个文件是。

增加 NuGet exe 调用的详细程度时,日志会显示以下消息:

Add file 'C:\Development\PersonRegister\Rubicon.RegisterNova.UI\Content\chosen-sprite@2x.png' to package as 'content\Content\chosen-sprite%402x.png'
File from dependency is not changed. File 'Content\chosen-sprite.png' is not added.

我已经检查了 chosen-sprite@2x.png 是否被修改(通过使用 BeyondCompare),甚至尝试从 NuGet 包中复制原始文件来代替它,但出于某种原因 nuget pack 似乎仍然认为有必要将该文件包含在我的 NuGet 包中。

我的理论是,NuGet 没有正确处理 @ 符号,这就是错误的原因(特别是因为没有 @ 的 bootstrap 文件可以正常工作). NuGet 可能无法正确处理 "special" 字符的进一步证据在于,在项目中安装我的 NuGet 包时,添加的文件实际上被命名为 chosen-sprite%402x.png 而不是 chosen-sprite@2x.png.

有没有人遇到过类似的问题?有没有办法解决这个问题?

不幸的是,这似乎是 NuGet 中的一个已知错误,请参阅:

https://github.com/NuGet/Home/issues/1117 (closed as duplicate, original problem: https://github.com/NuGet/Home/issues/1087).