0

我有一个 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 文件或其他内容中存在错误,但我找不到针对我的具体案例的任何文档。谢谢。

4

1 回答 1

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文件所在的位置(这很重要!!!)。

于 2019-06-20T22:44:45.530 回答