我从我的项目中创建了一个NuGet包。包的输出目录是解决方案目录。我想把它输出到一个特定的目录。我尝试了csproj文件和nuspec文件中的目标。没有一个成功。如何获取在指定文件夹中生成的包?
在my .csproj中:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>
字符串
在我的.nuspec中:
<?xml version="1.0"?>
<package >
<metadata>
<id>MyPackage.dll</id>
<version>1.0.0</version>
<authors>me</authors>
<owners>me</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package description</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2016</copyright>
<files>
<file src="bin\MyPackage.dll" target="C:\LocalPackageRepository" />
</files>
</metadata>
</package>
型
4条答案
按热度按时间wgeznvg71#
在NuGet的“旧”方式中(您似乎正在使用这种方式,检查this以获取新与旧的信息),这是可以通过使用您提到的.nuget\NuGet.targets文件中的命令来实现的。如果您将PackageOutputDir的行更改为以下,则可以使用。
字符串
更好的做法是在.csproj中设置PropertyGroup的属性,如下所示:
型
在NuGet的新方式中,您可以将这个密钥添加到NuGet.config文件中:
型
kcugc4gi2#
不知道为什么全局配置设置对我不起作用,但添加以下解决方案解决了我的问题:
字符串
型
参考:目标生成顺序
更新
目前我使用下面的代码,它更简单,但它复制所有的.nupkg文件到“本地”路径
型
xe55xuns3#
不能从.nuspec文件执行此操作。您可以创建NuGet.config文件并为所有解决方案定义全局包目录:
字符串
这是在.nupkg文件之外完成的,并存储在您的配置文件下或一个子目录中,该子目录是包含您的解决方案的所有目录的父目录。有关此功能的更多详细信息,请参阅NuGet文档。
hwazgwia4#
作为替代方案,您可以使用msbuild/VS打包一个(或多个)项目,然后使用NuGet add或NuGet init将它们复制/发布到本地NuGet提要:
第一个月
NuGet init只会从当前目录中拉取,所以我使用了这样的方法:
字符串
https://learn.microsoft.com/en-us/nuget/hosting-packages/local-feeds