我使用以下命令行在connected-carousels
中创建nuget
个包。
gitlab
如果我将nuget pack -Prop Configuration=Release -OutputDirectory nuget %REPONAME%\%APPNAME%\%APPNAME%.csproj
声明为Build Action
而Content
声明为Copy To Output Directory
,则不会在nuget包中应用它,或者在我安装它时。
我对这里的答案有点困惑: Set content files to "copy local : always" in a nuget package
我没有* .nuspec文件。它由上面的命令自动生成。
Always
tools/*
文件夹包含到nuget包中,并在安装时调用此脚本tools
答案 0 :(得分:1)
您需要将install.ps1文件添加到nuget包中。
使用您在原始帖子中提供的nuget pack命令后,它将在nuget文件夹中生成一个包。
然后请使用NuGet Package Explorer打开此软件包,并通过CONTENT添加工具文件夹 - >添加 - > NuGet Package Explorer菜单中的Tools文件夹。然后将install.ps1文件添加到tools文件夹中。
现在,当程序包安装到项目中时,它将调用install.ps1文件将文件的Copy To Output Directory属性设置为Copy Always。
答案 1 :(得分:0)
为了自动将文件/文件夹添加到nuget包中,我编写了一个名为NuGetLib
的小工具。
全局变量在安装程序中自动设置。
在我的.gitlab-ci.yml
中,只需要这4行来构建包含所有依赖项和tools文件夹的nuget包:
# create output directory
- mkdir nuget
# create nuget package
- nuget pack -Prop Configuration=Release -OutputDirectory nuget %REPONAME%\%APPNAME%\%APPNAME%.csproj
# Add tools folder
- nugetlib add -t nuget -f .\%REPONAME%\%APPNAME%\tools
# deploy package to local repo
- xcopy /s /y /i nuget %NUGET_PATH%
答案 2 :(得分:0)
在OP中:
我没有* .nuspec文件。它是由上面的命令自动生成的。
那不应该阻止您使用* .nuspec文件。它的名称应与您的项目相同(例如My.Consoto.Library.csproj ==> My.Consoto.Library.nuspec)-您仍然可以使用与OP中所示相同的.csproj
命令
然后,在* .nuspec中,您可以具有如下代码:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata minClientVersion="2.5">
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>Consoto LLC</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<copyright>$copyright$</copyright>
<projectUrl>https://dev.azure.com/Consoto/</projectUrl>
<iconUrl>http://www.consoto.com/images/favicon.ico</iconUrl>
<releaseNotes>My custom release notes</releaseNotes>
<language>en-US</language>
<tags>MyCustomTag1</tags>
<dependencies>
<dependency id="My.Other.Library" version="1.0.0" />
</dependencies>
</metadata>
<files>
<file src="nuget_tools/install.ps1" target="tools/" />
</files>
</package>
.nuspec中的令牌将接收.csproj的AssemblyInfo.cs的值。
我意识到上面的示例具有硬编码的依赖关系,如果没有该部分,我还没有尝试过。.因此,我将再次检查并更新答案,以查看更通用的* nuspec是否可以与在OP中演示的命令。