我正在从 Visual Studio 2013 发布 Web 应用程序。我需要包含不属于项目一部分的文件夹,并排除一些文件夹(一些文件夹属于项目,一些文件夹不属于项目)。因此,我进入项目的属性并将
Items To Deploy
字段设置为 All files in this project folder
,如下所示:
然后我开始寻找一种从
All files in this project folder
中排除文件夹的方法。我找到了this页面,其中明确指出了
Visual Studio UI 不会公开所有部署设置 您可以配置。例如,您不能使用 UI 来排除 部署中的单个文件夹。但是,您可以通过以下方式执行此操作 编辑存储配置设置的文件。对于每个发布 profile中有一个.pubxml文件,您可以直接编辑。
此页面链接到另一个页面,解释如何编辑文件,但不解释如何排除特定文件夹。
我发现其他网站(包括这个)解释了如何使用 csproj 文件中的以下标记排除旧版本 Visual Studio 中的文件夹:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
...
<ExcludeFilesFromDeployment>File1.aspx;File2.aspx</ExcludeFilesFromDeployment>
<ExcludeFoldersFromDeployment>Folder1;Folder2</ExcludeFoldersFromDeployment>
</PropertyGroup>
但 csproj 文件的 XML 元素似乎在 VS2013 中不再相关。我在某处读到(现在不记得在哪里)建议该元素已移至
[PublishProfileName].pubxml
文件,但尝试此操作失败。
我确信在 Visual Studio 2013 中有一种方法可以做到这一点,但对于我的一生,我不知道如何做。我在 Stackoverflow 以及其他论坛上找到了数十个相关问题,但没有一个解决方案在 VS2013 中对我有用。非常感谢任何帮助。
这些元素确实已移至 Visual Studio 2012 及更高版本中的 .pubxml 文件中。 这里是 MSDN 中有关从部署中排除文件和文件夹的相关文档。
在 Visual Studio 解决方案资源管理器中的“属性”/“发布配置文件”下找到相关的 .pubxml 文件,并在列出要排除的文件或文件夹的
ExcludeFilesFromDeployment
元素下添加新元素 ExcludeFoldersFromDeployment
或 PropertyGroup
,以半角分隔-冒号。
我注意到,当我将这些元素输入 Visual Studio 2015 时,这些元素并未在 IntelliSense 选择中显示为选项 - 但项目已编译并且排除仍然有效。
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
.
.
.
</PropertyGroup>
<ItemGroup>
<Content Update="appsettings.Development.json">
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="appsettings.TestBed.json">
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\files\**\*" CopyToPublishDirectory="Never" />
<Content Update="wwwroot\originals\**\*" CopyToPublishDirectory="Never" />
</ItemGroup>
</Project>
样品, 排除文件 排除文件夹
<ItemGroup>
<Content Update="appsettings.json" CopyToPublishDirectory="Never" />
<Content Update="wwwroot\**" CopyToPublishDirectory="Never" />
</ItemGroup>
在您的
cpproj
项目文件中,添加那些不包含在发布过程中的文件夹和文件,如下所示:
<Content Include="Documentation\**" CopyToPublishDirectory="Never" />