【问题标题】:Is it possible for csproj/msbuild to include files as optional content?csproj/msbuild 是否可以将文件作为可选内容包含在内?
【发布时间】:2016-07-22 23:47:33
【问题描述】:

我的应用程序中有一个可选配置文件,用于特定于实例的配置。该应用程序在没有它的情况下也可以运行,并且只有在您想要配置一些附加功能时才需要它。因此,它不应包含在源代码控制中,因为每个开发人员和客户端部署都不需要它,而需要它的人会有不同的价值。

我在弄清楚如何配置它以进行持续部署时遇到了问题。我可以毫无问题地在构建服务器上生成文件。 但是,由于 MsDeploy 读取 csproj 以确定要部署哪些文件,因此我的 csproj 必须跟踪此文件才能实际移动到部署服务器。 但是如果我让我的 csproj 跟踪它,那么它就不再是可选的,没有它我就无法构建应用程序。我正在使用没有 commit-one-version-ignore-subsequent 功能的 Mercurial(git 的 --assume-unchanged),因此在这方面的选项似乎非常有限。我坚信应该可以克隆一个 repo 并立即运行该项目,所以我真的不喜欢提交无法构建的东西的想法。

在 csproj 文件中是否有一种方法可以指示文件如果存在则应作为内容包含,否则应忽略?

【问题讨论】:

    标签: msbuild continuous-integration msdeploy csproj


    【解决方案1】:

    如果这是目录中唯一的 .config 文件,那么您可以手动编辑 .csproj 文件以通过文件掩码引用您的文件:

    <ItemGroup>
        <Compile Include="*.config"/>
    </ItemGroup>
    

    【讨论】:

    • 嗯...我知道文件模式,但在这种情况下没有想到。这是个好主意。应该注意的是,您应该不要使用 Visual Studio 创建或删除配置文件,因为这会自动扩展模式并且不再起作用。 (这仍然是 VS 2015 Update 2 的错误)
    猜你喜欢
    • 1970-01-01
    • 2021-04-29
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    相关资源
    最近更新 更多