Nuget.NugetPack不适用于外部软件包

时间:2020-05-19 08:19:02

标签: c# visual-studio nuget nuget-package-restore

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

因此,我在解决方案文件中添加了create .nugetconfig文件。它不在.nuget文件夹中,因为它似乎不再起作用。

除Pack功能外,其他一切都不对

app.pickerWheels.firstMatch.adjust(toPickerWheelValue: "17 May")

错误消息为:“ 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

这没有任何意义。为什么这样做?

1 个答案:

答案 0 :(得分:1)

这很奇怪,因为其他所有目标都起作用。和NuGet.Config 应该在BaseFolder而不是MySolution下。任何想法为什么 NuGet.Pack是否在MySolution下寻找?

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

有关nuget.config文件的更多信息,请参考this link

此外,您不必使用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 Instance,然后重新启动它以启用此新文件。

此外,解决方案文件夹下的nuget.config将对当前解决方案起作用。

如果您想对PC上的所有解决方案采取行动,则可以将nuget.config文件放在创建所有解决方案的根目录中,以便将其应用于这些解决方案,

如果您希望它适用于PC的当前用户的所有项目和解决方案,则应将其添加到 global nuget.config 文件中:

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