【问题标题】:Can publish options for ClickOnce be made configuration specific in Visual Studio 2013可以在 Visual Studio 2013 中将 ClickOnce 的发布选项设置为特定配置
【发布时间】:2014-07-22 17:58:14
【问题描述】:

我有一个 C# 应用程序,它针对应用程序的不同“风格”提供了一些不同的构建配置。我希望每个配置都有 ClickOnce 发布选项,而不是每次我进行构建和发布时都必须设置它们。发布选项似乎适用于所有配置。有没有办法使发布选项特定于每个配置?

【问题讨论】:

    标签: c# visual-studio clickonce


    【解决方案1】:

    您不能直接在 Visual Studio 中为每个配置使它们不同。您需要编辑.csproj 文件并对您需要不同的东西进行以下更改。

    例如第一个 <PropertyGroup> 元素包含 <PublishUrl> 元素。您可以多次应用条件并添加元素:

    <PublishUrl Condition=" '$(Configuration)' == 'Debug' ">debug\</PublishUrl>
    <PublishUrl Condition=" '$(Configuration)' == 'Release' ">release\</PublishUrl>
    

    当使用Debug 配置发布项目时,它将被发布到debug 目录。 使用Release配置发布项目时,会发布到release目录。

    将此条件应用于您需要修改的元素。遗憾的是,您可以将条件应用于整个 PropertyGroup,但这要复杂得多,因为如果您对其中任何一个组进行更改,您需要复制并跟踪这两个组。

    但是:

    每次您从 Visual Studio 中保存项目时,这都会被覆盖。 因此,您可以制作一个 xslt 文件,在发布之前转换文件,或者直接创建自己的发布应用程序,仅在发布时填写所有必需的发布参数,例如来自构建服务器。

    【讨论】:

      【解决方案2】:

      编辑

      这个答案无济于事。自从我写了它,我发现即使使用选择元素,Visual Studio IDE(至少是 VS2015)似乎也无法摆脱我们的配置。尽管下面的代码有效,但在配置和发布之间切换时,IDE 有时会覆盖项目文件中的此部分,使其不再按预期工作。

      因为它在技术上按原样工作,因此在使用其他工具进行发布时(或当 VS 中的问题得到修复时)可能有用,我将保留原始答案以供参考。

      原答案

      我也首先尝试了 Herdo 提到的解决方案,只是遇到了他提到的大“但是”;每次保存项目文件时,Visual Studio 都会覆盖您的条件。

      但是,我从 found 开始,使用 Choose element 您可以实现相同的行为无需 Visual Studio 搞砸。不过,您仍然需要手动编辑 .csproj 文件。

      简而言之,不要将 Conditional 直接应用于第一个属性组中的 PublishUrl 标记。它将被 Visual Studio 覆盖。相反,稍后在项目文件中定义另一个。在构建或发布时,第二个值将取代第一个值,但 IDE 将不理会它。这是您可以使用“选择”组设置条件的第二个。

      在第一个属性组下方,添加如下部分:

        <Choose>
          <When Condition=" '$(Configuration)' == 'Debug' ">
            <PropertyGroup>
              <PublishUrl>your\debug\publish\location</PublishUrl>
            </PropertyGroup>
          </When>
          <When Condition=" '$(Configuration)' == 'Release' ">
            <PropertyGroup>
              <PublishUrl>your\release\publish\location</PublishUrl>
            </PropertyGroup>
          </When>
        </Choose>
      

      当然,您可以根据需要添加任意数量的配置和风格。

      【讨论】:

        【解决方案3】:

        在您设置“调试”的菜单中,“发布”。您可以创建一种新的配置类型。一旦您创建了自己的配置。可以使用上面的代码:

        #if ReleaseConfiguration1
        //specifics configuration 1 goes here
        #endif
        #if ReleaseConfiguration2
        //specifics configuration 2 goes here
        #endif
        

        【讨论】:

        • 这根本不能回答问题。请确保您在回答之前理解了问题。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多