【问题标题】:How do I include an externally maintained directory as a VisualStudio 2008 C# Project Resource?如何将外部维护的目录包含为 VisualStudio 2008 C# 项目资源?
【发布时间】:2010-12-21 13:24:07
【问题描述】:

我有一个目录,其中包含 Visual Studio 2008 项目的外部维护的 html 帮助文件。该目录可能包含从构建到构建的任意数量的文件。我知道如何通过解决方案资源管理器将目录和文件添加到项目中,包括它们作为所需的输出(内容),但在这种情况下,我希望始终自动包含指定的 html 目录、其所有子文件夹及其所有文件无需在每次添加文件时设置属性。

我不想在每次帮助文件发生更改时都设置“构建操作”和“复制到输出目录”属性。另一个限制是我同时使用安装项目(同一解决方案的一部分)和 ClickOnce 安装,具体取决于部署环境。这看起来应该非常简单,但到目前为止我一直找不到答案。

感谢您的帮助!

【问题讨论】:

    标签: visual-studio visual-studio-2008 projects-and-solutions


    【解决方案1】:

    您可能会考虑的一种方法是调整 .csproj 文件并添加一个构建后目标来进行复制。这应该接近您的需要:

    <ItemGroup>
        <DocumentationFiles Include="DocsDirectory\**\*"/>
    </ItemGroup>
    
    <Target Name="AfterBuild">
        <Copy
            SourceFiles="@(DocumentationFiles)"
            DestinationFolder="Output\Docs\"
        />
    </Target>
    

    【讨论】:

    • 这并不能使它们成为 ClickOnce 的可部署内容。
    • 我没有在安装中测试过它,但是在构建上似乎朝着正确的方向发展。但是,它没有递归地添加 DocsDirectory 的内容,它只拉取顶层文件。此外,它将该项目组添加到了 SolutionExplorer,但它的顶级文件标有“/!\”并且没有子文件夹。
    • @Hans Passant 你是对的,你必须做额外的工作才能将文件添加到清单中,但我认为 AfterBuild 策略仍然是一种可靠的方法。
    • @Skcussm 我修复了 DocumentationFiles ItemGroup 所以它现在应该可以正确递归了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多