csproj/msbuild 是否可以将文件作为可选内容包含在内?
Is it possible for csproj/msbuild to include files as optional content?
我的应用程序中有一个可选的配置文件,用于特定于实例的配置。该应用程序可以在没有它的情况下运行,并且只有在您想要配置一些附加功能时才需要它。因此,它不应该包含在源代码控制中,因为每个开发人员和客户端部署都不需要它,而那些需要它的人会有不同的值。
我在弄清楚如何配置它以进行持续部署时遇到问题。我可以毫无问题地在构建服务器上生成文件。 但是,由于 MsDeploy 读取 csproj 以确定要部署的文件,因此我的 csproj 必须跟踪此文件才能实际移动到部署服务器。 但是 如果我的 csproj 跟踪了它,那么它就不再是可选的,没有它我就无法构建应用程序。我使用的 Mercurial 没有提交一个版本忽略后续功能(git 的 --assume-unchanged
),所以在这方面的选择似乎非常有限。我坚信应该可以立即克隆一个存储库和 运行 项目,所以我真的不喜欢提交无法构建的东西的想法。
csproj 文件中是否有一种方法可以指示文件如果存在则应作为内容包含在内,否则将被忽略?
如果这是目录中唯一的 .config 文件,那么您可以手动编辑 .csproj 文件以通过文件掩码引用您的文件:
<ItemGroup>
<Compile Include="*.config"/>
</ItemGroup>
我的应用程序中有一个可选的配置文件,用于特定于实例的配置。该应用程序可以在没有它的情况下运行,并且只有在您想要配置一些附加功能时才需要它。因此,它不应该包含在源代码控制中,因为每个开发人员和客户端部署都不需要它,而那些需要它的人会有不同的值。
我在弄清楚如何配置它以进行持续部署时遇到问题。我可以毫无问题地在构建服务器上生成文件。 但是,由于 MsDeploy 读取 csproj 以确定要部署的文件,因此我的 csproj 必须跟踪此文件才能实际移动到部署服务器。 但是 如果我的 csproj 跟踪了它,那么它就不再是可选的,没有它我就无法构建应用程序。我使用的 Mercurial 没有提交一个版本忽略后续功能(git 的 --assume-unchanged
),所以在这方面的选择似乎非常有限。我坚信应该可以立即克隆一个存储库和 运行 项目,所以我真的不喜欢提交无法构建的东西的想法。
csproj 文件中是否有一种方法可以指示文件如果存在则应作为内容包含在内,否则将被忽略?
如果这是目录中唯一的 .config 文件,那么您可以手动编辑 .csproj 文件以通过文件掩码引用您的文件:
<ItemGroup>
<Compile Include="*.config"/>
</ItemGroup>