Nuget.NugetPack 不使用外部包

Nuget.NugetPack not working with external packages

我正在尝试将下载的库保存到外部包中。

所以我在解决方案文件中添加了 create .nugetconfig 文件。它不在 .nuget 文件夹中,因为它似乎不再有效。

除 Pack 功能外,一切都是错误的

<Target Name="Pack">
 <NuGet.NuGetPack ToolPath="$(NgetToolPath)" File="$(NuspecPackage)"/> 
</Target>

错误消息是:“NuGet.Config 不是有效的 XML。路径:'C:\BaseFolder\MySolution\NuGet.Config'。 缺少根元素。"

这很奇怪,因为所有其他目标都有效。 NuGet.Config 应该在 BaseFolder 而不是 MySolution 下。知道为什么 NuGet.Pack 在 MySolution 下查找吗?不幸的是,我无法指定配置文件的位置。 NuGet.NuGetRestore和NuGet.NuGetInstall可以指定配置文件!

令人沮丧,任何帮助。

编辑: 我查看了来源:https://github.com/loresoft/msbuildtasks/blob/master/Source/MSBuild.Community.Tasks/NuGet/NuGetPack.cs

这毫无意义。为什么要这样做?

This is weird because every other target works. And NuGet.Config should be under BaseFolder and not MySolution. Any ideas why NuGet.Pack is looking under MySolution?

到目前为止,要对你的解决方案做一些操作,你可以在解决方案文件夹下新建一个Nuget.config文件(它是由 nuget 机制设计)。它将应用于解决方案子目录中的所有项目。

您可以参考this link了解更多关于nuget.config文件的信息。

除此之外,不用NuGet.NuGetPack改外包,太旧了。您可以在新的 Nuget.config 文件中添加这些节点来更改它:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <config>        
        <add key="repositoryPath" value="C:\External" />  //change the path of packages of the solution
    </config>

<packageRestore>
        <add key="enabled" value="true" />    //enable or disable package restore
        <add key="automatic" value="true" />
</packageRestore>

</configuration>

更多关于自定义nuget配置设置的信息,您可以参考this link

注意完成这些后,您应该关闭 VS 实例,然后重新启动它以启用这个新文件。

另外,解决方案文件夹下的nuget.config会作用于当前解决方案。

如果你想对你PC上的所有解决方案进行操作,你可以将nuget.config文件放在你创建所有解决方案的根目录下,这样它就可以应用于这些解决方案,

如果你想它适用于所有项目,解决方案在当前 PC 用户上,你应该在 global nuget.config 文件中添加这些:

C:\Users\xxx<user account>\AppData\Roaming\NuGet\NuGet.Config