【问题标题】:Apply existing build configuration to a new project将现有构建配置应用于新项目
【发布时间】:2016-03-01 04:56:37
【问题描述】:

这是场景,

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

  2. 导入具有调试、发布、测试和生产构建配置的现有项目“Common.Logger”。

一旦我添加了 Common.Logger 项目,VS 2013 就会在构建配置下拉列表(运行旁边)中显示所有 Debug、Release、Test 和 Prod 配置。

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

如何将这些 Test 和 Prod 构建配置添加到 Web 项目?

【问题讨论】:

    标签: c# asp.net-mvc visual-studio-2013


    【解决方案1】:

    我想出了解决办法。

    当工具不起作用或没有工具时,唯一的选择是通过手动编辑 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)中的不同构建配置“添加现有项目”并编译时,您将在解决方案的“全局部分”中的导入项目中获得这些新构建配置文件。这就是为什么您可以在“Visual Studio”的环境下拉菜单(调试、发布、...下拉菜单)中看到这些配置的原因。

    检查 Sln 文件(使用记事本打开)我注意到这些新的构建配置没有添加到 GlobalSection(ProjectConfigurationPlatforms) 部分的“MyMVCWebApplication”中的项目中。如您所见,每个项目 ID 每个环境有两行,分别为 CPU.Build.0 和 CPU.ActiveCfg。 Web 项目只有 Dev 和 Release 才有这些记录。

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

    【讨论】:

    • 我也遇到了这个问题。对我有用的是在相关 proj 文件中添加缺少配置值的 部分(例如:.. . )。这与您的答案基本相同,因此我不会发布另一个答案,但我会留下此评论,以防其他人遇到同样的问题并且解决方案编辑并不能完全解决问题。感谢您为我指明正确的方向!
    • 除了答案和@MichaelArmes 评论之外,我还需要<Configurations>List;Of;My;Configurations</Configurations> 的属性(在第一个具有项目guid 和输出类型的属性组中)。并非所有 .csproj 文件都需要这样做,而只是一些。
    【解决方案2】:

    在配置管理器(构建菜单)中,您会看到项目列表。 在配置列中,您有一个下拉列表。在该列表的底部,您可以选择 <New...>

    更新: 如 cmets 中所述,这不会立即起作用。 今天我也遇到了类似的情况:

    1. 添加新配置时,在配置管理器中,我取消选中“创建新的解决方案配置”并点击确定。
    2. 我将工具栏中的配置设置为所需的配置(开发)
    3. 我右键单击 app.config 并从上下文菜单中选择 Add Transform (Slow Cheetah)。

    添加了 app.Development.config

    【讨论】:

    • 使用“New”你不能添加相同的 Prod 配置(给出一个错误,说名称已经存在)。
    • 开箱即用的思考:如果您首先删除导入项目中的配置?并将配置添加到两个项目中?
    • 或许SlowCheetah这个工具能帮上忙。
    • 我使用的是慢速猎豹,它只适用于 app.configs。但这是关于 web 项目中的 webconfig。
    • @Dhanuka777 - 如果您将其命名为与现有配置相同的名称,它确实有效 - 但您必须按照上述答案中的步骤 1 取消选中“创建新的解决方案配置”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-14
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 2021-10-28
    • 2018-09-07
    相关资源
    最近更新 更多