我有一个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>
Jenkins文件:
bat "dotnet-octo pack --id=service --format=NuPkg --basePath=bin\\x64\\BuildServer --version=0.0.0.${env.BUILD_ID} --overwrite"
我确定我的nuspec文件中存在错误或某些错误,但是找不到针对我的特定情况的任何文档。谢谢。
答案 0 :(得分:0)
结果证明我对此太想了。我只是编辑了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="bin\x64\BuildServer\**\*.*" exclude="bin\x64\BuildServer\app.config;bin\x64\BuildServer\settings.config;bin\x64\BuildServer\Config\*.xml" />
</files>
src
的意思是“包括bin\x64\BuildServer
中的所有目录和文件,其中所有dll等都在构建之后。exclude
的意思是 这些文件。注意所有路径都与您的nuspec文件所在的位置有关(这很重要!!!)。