csproj/msbuild是否可以将文件作为可选内容包括在内?

csproj/msbuild是否可以将文件作为可选内容包括在内?,msbuild,continuous-integration,msdeploy,csproj,Msbuild,Continuous Integration,Msdeploy,Csproj,我的应用程序中有一个可选的配置文件,用于实例特定的配置。应用程序在没有它的情况下工作,并且只有在您想要配置一些附加功能时才需要它。因此,它不应该包含在源代码管理中,因为每个开发人员和客户机部署都不需要它,而那些需要它的人会有不同的价值观 我在弄清楚如何将其配置为连续部署时遇到了一个问题。我可以在构建服务器上生成文件而不会出现问题但是,由于MsDeploy读取csproj以确定要部署哪些文件,因此我的csproj必须跟踪此文件才能将其实际移动到部署服务器但是如果我的csproj跟踪了它,那么它就不

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

我在弄清楚如何将其配置为连续部署时遇到了一个问题。我可以在构建服务器上生成文件而不会出现问题但是,由于MsDeploy读取csproj以确定要部署哪些文件,因此我的csproj必须跟踪此文件才能将其实际移动到部署服务器但是如果我的csproj跟踪了它,那么它就不再是可选的,没有它我就无法构建应用程序。我使用的是Mercurial,它没有提交一个版本忽略后续功能(git的
--假设未更改
),因此在这方面的选项似乎非常有限。我非常坚信,复制回购协议并立即运行项目是可能的,所以我真的不喜欢将无法构建的东西复制出来的想法


csproj文件中是否有方法表明,如果存在文件,则应将其作为内容包含,否则将忽略该文件?

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

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

Hmm…我知道文件模式,但在本例中没有想到。这是个不错的主意。应该注意的是,您不应该使用VisualStudio创建或删除配置文件,因为这样会自动扩展模式,并且不再工作。(从VS 2015更新2开始,这仍然是一个bug)