我正在编写.nuspec
文件,并且在安装软件包时必须将文件复制到特定的绝对路径。
代码段如下所示:
<files>
<file src="myFolder\myFile.txt" target="C:\SomeFolder\myFolder" />
</files>
运行nuget pack
时,出现以下错误(这是-Verbosity detailed
):
Target path 'C:\SomeFolder\myFolder' contains invalid characters.
System.Exception:目标路径'C:\ SomeFolder \ myFolder'包含无效字符。
在NuGet.Packaging.Manifest.Validate(清单清单)
在NuGet.Packaging.Manifest.ReadFrom(流流,Func 2 propertyProvider, Boolean validateSchema)
at NuGet.Packaging.PackageBuilder.ReadManifest(Stream stream, String basePath, Func
2 propertyProvider)处
在NuGet.Packaging.PackageBuilder..ctor处(字符串路径,字符串basePath,Func`2 propertyProvider,布尔值includeEmptyDirectories,布尔值确定性)
在NuGet.Commands.PackCommandRunner.CreatePackageBuilderFromNuspec(字符串路径)
在NuGet.Commands.PackCommandRunner.BuildFromNuspec(字符串路径)
在NuGet.Commands.PackCommandRunner.BuildPackage()
在NuGet.CommandLine.PackCommand.ExecuteCommand()
在NuGet.CommandLine.Command.ExecuteCommandAsync()
在NuGet.CommandLine.Command.Execute()
在NuGet.CommandLine.Program.MainCore(String workingDirectory,String [] args)
我想这与使用绝对路径有关,但是
1)一年前就可以使用(我不记得那时的确切版本的nuget)
2)如何指定绝对路径?
我正在使用最新的nuget版本,该版本是我今天上午下载的。
答案 0 :(得分:1)
事实证明这是设计使然,因为他们认为出于安全方面的考虑,有一个nuget软件包会更改安装项目范围之外的内容。正如Github中回答的那样:https://github.com/NuGet/Home/issues/9329(也正如评论中提到的Mihai Albert)
我最终使用的解决方法是使用相对路径打包并将软件包安装在所需的位置。