Visual studio 添加具有其他CSPROJ“发布”和“调试”生成配置的新项目

Visual studio 添加具有其他CSPROJ“发布”和“调试”生成配置的新项目,visual-studio,msbuild,msdeploy,Visual Studio,Msbuild,Msdeploy,我们的VisualStudio2010解决方案通常包含40到60个项目。在这些解决方案中,我们有许多自定义构建配置,如Release_Staging、Release_QA、Release_Production等。这些都通过XML转换(例如web.Release_Staging.config)管理web.config中堆积如山的自定义配置选项。这一切都很完美 我们的问题是在解决方案中添加新项目时。当我们这样做时,这些定制构建配置都不会被创建;只有默认的调试和发布配置 是否有办法编辑某些csproj

我们的VisualStudio2010解决方案通常包含40到60个项目。在这些解决方案中,我们有许多自定义构建配置,如Release_Staging、Release_QA、Release_Production等。这些都通过XML转换(例如web.Release_Staging.config)管理web.config中堆积如山的自定义配置选项。这一切都很完美

我们的问题是在解决方案中添加新项目时。当我们这样做时,这些定制构建配置都不会被创建;只有默认的调试和发布配置

是否有办法编辑某些csproj模板或强制完全刷新以将所有现有构建配置复制到此新的csproj文件中

也许是一些自定义命令行脚本或PowerShell向导?我们总是不得不手动编辑csproj来添加8个左右的定制构建配置,因为一次添加10到20个项目似乎是最快的事情

这是生成中的一个问题,因为我们将Microsoft的打包和部署/T:Package选项用于msbuild。我们的构建脚本使用特定的配置

msbuild BlogWebsite.csproj /T:Package /P:Configuration=%Configuration%
例如,由于生成配置被指定为Release_Staging,因此在编译期间会引发错误并停止生成,因为新项目没有在其csproj文件中指定新的生成配置

是的,我已经手动编辑了解决方案的生成配置管理器。但是,这些设置似乎不坚持,很容易被覆盖。更不用说为所有50多个项目编辑每个构建配置7到8个。这需要管理8*50或400个项目配置

现在,添加新的构建配置不是问题,因为在构建配置管理器中这很容易。我所说的是将一个新项目添加到现有解决方案中,该解决方案已经有许多自定义构建配置


提前谢谢

我必须从现有项目配置中获取节点。在我最喜欢的文本编辑器中打开了所有*.csproj文件,并将丢失的块添加到每个没有该块的项目中。您可以在Visual Studio中打开解决方案的情况下编辑它们

我的配置看起来有点像

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'StagingQA|AnyCPU'">
    <OutputPath>bin\StagingQA\</OutputPath>
    <DefineConstants>TRACE;StagingQA</DefineConstants>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
编辑完每一个后,保存它们并返回VisualStudio。它会要求你重新加载项目,这样做

作为最后一步,不要忘记转到Confituration Manager右键单击解决方案以获取它。从这里,您必须选择您的特定配置,并更新每个项目以使用新方法


这是一个手动项目,但它解决了这个问题。我发现每次添加新项目时都必须手动执行此操作。

Visual Studio 2012 RC引入了链接到发布配置文件而不是生成配置的转换文件。这可能使您能够减少必须创建的生成配置的数量。如果创建名为Staging的概要文件,则可以创建名为Web.Staging.config的转换文件,并在应用生成配置转换文件后在部署过程中应用该文件。请参阅和+1。我将对此进行调查。这正是我在原始问题中提到的:我们必须手动编辑csproj。我的问题是:有没有一种自动化的方法。谢谢你的信息,但这不是答案。