使用 Cake 创建 Nuget 包并仅打包 dll
Creating a Nuget package with Cake and packing only dlls
当我通过 myPath\nuget.exe pack -Prop Configuration=Release
从命令提示符创建 nuget 包时,我的 nuget 包只包含 DLL 而没有其他内容;就像我想要的那样。
当我用 Cake 创建 Nuget 包时,项目文件夹中的每个文件都包含在内。
如何让 Cake Nuget 只包含我的 dll?表现得像命令提示符。
在文件build.cake
中我有
Task("Package")
.Does(() =>{
NuGetPack("../CompulsoryCow/CompulsoryCow.nuspec", new NuGetPackSettings{
Id = "CompulsoryCow",
Authors = new []{ "LosManos" },
Version = "1.0.0",
Description = "TBD",
Verbosity = NuGetVerbosity.Detailed,
}
);
});
我的 CompulsoryCow.nuspec
文件,适用于 nuget.exe pack
。
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<licenseUrl>https://raw.githubusercontent.com/LosManos/CompulsoryCow/master/License.txt</licenseUrl>
<projectUrl>https://github.com/LosManos/CompulsoryCow</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<summary>...</summary>
<releaseNotes>...</releaseNotes>
<copyright>LGPLv3+NoEvil.</copyright>
<repository type="git" url="https://github.com/LosManos/CompulsoryCow" />
</metadata>
</package>
更新:
我将 BasePath
添加到 NuGetPackSettings
以指向我拥有 DLL 和 PDB 的 ..bin/release
文件夹。它打包了更多文件,但我认为它表现良好。
输出:
Added file '[Content_Types].xml'.
Added file '_rels/.rels'.
Added file 'CompulsoryCow.dll'.
Added file 'CompulsoryCow.nuspec'.
Added file 'CompulsoryCow.pdb'.
Added file 'package/services/metadata/core-properties/3a1990a4516a46118d81f4bd5961a767.psmdcp'.
我改为使用 CompulsoryCow.csproj
,然后它的行为就像从命令提示符调用时一样。 DLL 已打包但 PDB 未打包。
在旁注中,它从 nugetspec 文件中获取 ID、作者、版本和描述;当我使用 CompulsoryCow.nuspec
.
时它没有做的事情
Added file '[Content_Types].xml'.
Added file '_rels/.rels'.
Added file 'CompulsoryCow.nuspec'.
Added file 'lib/net40-client/CompulsoryCow.dll'.
Added file 'package/services/metadata/core-properties/c4d7ab4804fb417e8e5f9fa4d0062c74.psmdcp'.
当我通过 myPath\nuget.exe pack -Prop Configuration=Release
从命令提示符创建 nuget 包时,我的 nuget 包只包含 DLL 而没有其他内容;就像我想要的那样。
当我用 Cake 创建 Nuget 包时,项目文件夹中的每个文件都包含在内。
如何让 Cake Nuget 只包含我的 dll?表现得像命令提示符。
在文件build.cake
中我有
Task("Package")
.Does(() =>{
NuGetPack("../CompulsoryCow/CompulsoryCow.nuspec", new NuGetPackSettings{
Id = "CompulsoryCow",
Authors = new []{ "LosManos" },
Version = "1.0.0",
Description = "TBD",
Verbosity = NuGetVerbosity.Detailed,
}
);
});
我的 CompulsoryCow.nuspec
文件,适用于 nuget.exe pack
。
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<licenseUrl>https://raw.githubusercontent.com/LosManos/CompulsoryCow/master/License.txt</licenseUrl>
<projectUrl>https://github.com/LosManos/CompulsoryCow</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<summary>...</summary>
<releaseNotes>...</releaseNotes>
<copyright>LGPLv3+NoEvil.</copyright>
<repository type="git" url="https://github.com/LosManos/CompulsoryCow" />
</metadata>
</package>
更新:
我将 BasePath
添加到 NuGetPackSettings
以指向我拥有 DLL 和 PDB 的 ..bin/release
文件夹。它打包了更多文件,但我认为它表现良好。
输出:
Added file '[Content_Types].xml'.
Added file '_rels/.rels'.
Added file 'CompulsoryCow.dll'.
Added file 'CompulsoryCow.nuspec'.
Added file 'CompulsoryCow.pdb'.
Added file 'package/services/metadata/core-properties/3a1990a4516a46118d81f4bd5961a767.psmdcp'.
我改为使用 CompulsoryCow.csproj
,然后它的行为就像从命令提示符调用时一样。 DLL 已打包但 PDB 未打包。
在旁注中,它从 nugetspec 文件中获取 ID、作者、版本和描述;当我使用 CompulsoryCow.nuspec
.
Added file '[Content_Types].xml'.
Added file '_rels/.rels'.
Added file 'CompulsoryCow.nuspec'.
Added file 'lib/net40-client/CompulsoryCow.dll'.
Added file 'package/services/metadata/core-properties/c4d7ab4804fb417e8e5f9fa4d0062c74.psmdcp'.