如何从NuGet包中排除一个文件夹

25

我正在使用 Octopack / Nuspec 文件来构建我的 NuGet 包。

我希望排除项目中某些存在的文件夹,例如 "obj" 文件夹。我一直在尝试让排除标签起作用,但是没有成功。NuGet 文件已经构建完成,但是文件夹仍然存在。

可惜网络上所有的示例都涉及特定的文件类型而不是文件夹。

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>Foo</id>
    <title>Foo</title>
    <version>$version$</version>
    <authors>NA</authors>
    <owners>NA</owners>
    <licenseUrl>http://Foo</licenseUrl>
    <projectUrl>http://Foo</projectUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Foo</description>
    <releaseNotes>NA</releaseNotes>
  </metadata>
  <files>
    <file src="obj\**\*.*" exclude="*.*" />
  </files>
</package>

你能描述一下你想在包中包含哪些部分吗? - John Hoerr
3个回答

39

我需要创建一个Web应用程序,但是要使用“CodeFile”属性将其部署为标准的ASP.NET网站。

这基本上是为了更新标准ADFS登录站点中的页面。

<files>
  <file src="**" exclude="**\*.dll;**\*.designer.cs;**\*.csproj;**\*.pdb;**\*.user;**\*.vspscc;bin\*.cs;bin\*.aspx;bin\*.config;bin\*.asax;bin\*.pubxml" />
</files>

1
你需要使用NuGet吗?我想知道是否使用Web Deploy package会更适合你想要实现的目标。 - John Hoerr
1
是的,我们需要使用章鱼部署,因此需要使用NuGet。 - Kye
我尝试使用这个解决方案。但不幸的是,什么也没有发生? - Baskar John

11

回答楼主的问题,如果您想从Nuget包中仅排除obj文件夹,请在您的nuspec xml中使用以下内容。

<files>
    <file src="*\**" target="\" exclude="obj\**\*.*"/>
</files>

这会有很多副作用。 - Tomas Hesse

1

根据您正在构建的项目,您不需要排除任何内容。

如果您正在构建Windows服务/控制台应用程序,则OctoPack只应打包您的bin\release目录。

如果您正在构建Web应用程序,则应使用“发布”命令将二进制文件和内容文件发送到临时文件夹,然后OctoPack将对其进行打包。这样,您的obj文件夹和C#文件将不会被打包。

有关如何执行此操作的信息,请参见Web应用程序发布部分:

http://octopusdeploy.com/documentation/packaging/octopack


你可以更新这个答案吗?我在链接的页面上没有看到“Web应用程序发布”部分。我遇到的具体问题是bin\Roslyn文件夹被包含在nupkg中。我尝试使用发布配置文件并对csproj运行msbuild,但这并不起作用: &$msbuildExe ..\trunk\WebUI\WebUI.csproj /p:DeployOnBuild=true /p:PublishProfile=local /p:RunOctoPack=true - b_levitt
它包括像EntityFramework.dll这样的文件,这些文件依赖于单独的NuGet包,而不是应该包含在我的nupkg文件中的文件。如何将它们排除在外? - Triynko
这个问题并不是要寻求建议,而是明确要从一个NuGet包中排除一个文件夹。 - Dean Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接