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

问题描述 投票:0回答:1

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

所以我在解决方案文件中添加了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

这没有道理。为什么这样做?

c# visual-studio nuget nuget-package-restore
1个回答
0
投票

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

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

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

Besides,您不必使用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

[Note,完成这些操作后,应关闭VS实例,然后重新启动它以启用此新文件。

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.