我有一个Windows服务,我需要用OctoPack打包到一个nuget包中,但我必须排除一个名为"Config"的目录和其他一些配置文件(这些文件是特定于实例的,这将部署到多个实例。但是,无论我在 nuspec 文件中放入什么,这些文件始终包含在内。
项目目录:
Config <dir>
Code <dir>
app.config
settings.config
service.csproj
service.nuspec
Nuspec 文件:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<!-- Required elements-->
<id>service</id>
<version>0.0.0</version>
<description>service for app</description>
<authors>our team</authors>
</metadata>
<!-- Optional 'files' node -->
<files>
<file src="**" exclude="Config" />
<file src="**" exclude="**app.config" />
<file src="**" exclude="**settings.config" />
</files>
</package>
詹金斯文件:
bat "dotnet-octo pack --id=service --format=NuPkg --basePath=bin\x64\BuildServer --version=0.0.0.${env.BUILD_ID} --overwrite"
我确定我的 nuspec 文件中有错误或其他内容,但我找不到针对我的特定情况的任何文档。谢谢。
我想多了。我刚刚编辑了 Jenkins 文件以在打包之前删除它们。完全忘记了bat
是一种选择。
bat "del bin\x64\BuildServer\app.config"
bat "del bin\x64\BuildServer\settings.config"
bat "rmdir /s /q bin\x64\BuildServer\Config"
bat "dotnet-octo pack --id=service --format=NuPkg --basePath=bin\x64\BuildServer --version=0.0.0.${env.BUILD_ID} --overwrite"
但是,通过 nuspec 执行此操作的正确方法是
<files>
<file src="binx64BuildServer***.*" exclude="binx64BuildServerapp.config;binx64BuildServersettings.config;binx64BuildServerConfig*.xml" />
</files>
src
的意思是"包括binx64BuildServer
中的所有目录和文件,其中所有的dll等都在构建之后。exclude
意味着除了这些文件。请注意,所有路径都相对于您的 nuspec 文件所在的位置(这很重要!!(。