C# 将现有生成配置应用于新项目

C# 将现有生成配置应用于新项目,c#,asp.net-mvc,visual-studio-2013,C#,Asp.net Mvc,Visual Studio 2013,这是一个场景 创建了一个新的Web应用程序(MVC5,空模板)作为“MyMVCWebApplication”。 默认的构建配置是调试和发布 导入具有调试、发布、测试和产品构建配置的现有项目“Commont.Logger” 一旦我添加了Common.Logger项目,VS 2013将在build configuration下拉列表(运行旁)中显示所有调试、发布、测试和产品配置 但我无法在web项目中为web配置(用于测试和生产)执行“添加配置转换”。 然后我检查了“配置管理器”,我注意到它没有显示

这是一个场景

  • 创建了一个新的Web应用程序(MVC5,空模板)作为“MyMVCWebApplication”。 默认的构建配置是调试和发布

  • 导入具有调试、发布、测试和产品构建配置的现有项目“Commont.Logger”

  • 一旦我添加了Common.Logger项目,VS 2013将在build configuration下拉列表(运行旁)中显示所有调试、发布、测试和产品配置

    但我无法在web项目中为web配置(用于测试和生产)执行“添加配置转换”。 然后我检查了“配置管理器”,我注意到它没有显示web项目的测试和产品配置。在编辑配置中,它只有重命名和删除功能,没有“添加”功能


    如何将这些测试和产品构建配置添加到Web项目中

    在Configuration Manager(构建菜单)中,您可以看到项目列表。 在列配置中有一个下拉列表。在该列表的底部,您可以选择

    更新: 正如评论中所提到的,这并不能马上奏效。 今天我遇到了类似的情况:

  • 添加新配置时,在configuration Manager中,我取消选中“创建新的解决方案配置”,然后单击“确定”
  • 我将工具栏中的配置设置为所需的配置(开发)
  • 我右键单击app.config,从上下文菜单中选择AddTransform(慢速猎豹)

  • 这就添加了app.Development.config,我找到了解决方案

    当工具不起作用或没有工具时,唯一的选择是通过手动编辑sln文件来弄脏手

    仅供参考

    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Dev|Any CPU = Azure_Dev|Any CPU
        PreProd|Any CPU = Azure_PreProd|Any CPU
        Test|Any CPU = Azure_Test|Any CPU
        Debug|Any CPU = Debug|Any CPU       
        Prod|Any CPU = Prod|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Dev|Any CPU.ActiveCfg = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Dev|Any CPU.Build.0 = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.PreProd|Any CPU.ActiveCfg = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.PreProd|Any CPU.Build.0 = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Test|Any CPU.ActiveCfg = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Test|Any CPU.Build.0 = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Dev|Any CPU.ActiveCfg = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Dev|Any CPU.Build.0 = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Prod|Any CPU.ActiveCfg = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Prod|Any CPU.Build.0 = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {8D475C27-8BAF-4B5E-8D65-729A8541B14F}.Release|Any CPU.Build.0 = Release|Any CPU
    ............more....
    
    这是我的观察

    假设项目Id“8D475C27-8BAF-4B5E-8D65-729A8541B14F”是导入的项目

    当您使用“新项目”(MyMVCWebApplication)中没有的不同生成配置“添加现有项目”并进行编译时,您将在解决方案文件的“全局部分”中导入的项目中获得这些新生成配置。这就是为什么您可以在“VisualStudio”的环境下拉列表(调试、发布…下拉列表)中看到这些配置

    检查Sln文件(用记事本打开)时,我注意到这些新的构建配置没有添加到GlobalSection(ProjectConfigurationPlatform)部分“MyMVCWebApplication”中的项目中。正如您所看到的,每个项目Id在每个环境中都有两行,分别是CPU.Build.0和CPU.ActiveCfg。 Web项目只有在开发和发布时才有这些记录

    解决方案:
    为引用现有项目的WebProject向Solutionfile添加了配置

    使用“New”时,您不能添加相同的Prod配置(给出一个错误,说明名称已存在)。开箱思考:如果您首先在导入的项目中删除配置?并将配置添加到两个项目中?也许工具SlowCheetah可以帮助。我使用slow cheetah,它仅适用于app.configs。但这是关于web项目中的webconfig。@Dhanuka777-如果您将其命名为与现有配置相同的名称,它确实可以工作-但是您必须按照上述回答中的步骤1取消选中“创建新的解决方案配置”,否则也会遇到此问题。对我有效的方法是在相关项目文件中添加缺少配置值的部分(例如:…)。这和你的答案基本上是一样的,所以我不会再发布另一个答案,但我会留下这条评论,以防其他人遇到同样的问题,并且解决方案编辑没有完全起作用。谢谢你给我指明了正确的方向!除了答案和@MichaelArmes注释外,我还需要一个
    列表的属性(在第一个属性组中,具有项目guid和输出类型);属于我的;配置
    。这并不是所有.csproj文件都需要的,只是一些文件需要。