繁体   English   中英

可以在Visual Studio 2013中发布ClickOnce特定配置选项

[英]Can publish options for ClickOnce be made configuration specific in Visual Studio 2013

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

您不能直接在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文件,也可以直接创建自己的发布应用程序,只有在从构建服务器发布时才填充所有必需的发布参数。

编辑

这个答案无济于事。 自从我编写它以来,我发现即使使用Choose元素,Visual Studio IDE(至少VS2015)也似乎无法完全放弃我们的配置。 虽然下面的代码有效,但在配置和发布之间切换时,IDE会在某个时刻覆盖项目文件中的此部分,使其不再按预期工作。

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

原始答案

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

但是,我发现使用Choose元素可以实现相同的行为, 而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>

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

在设置Debug,Release的菜单中。 您可以创建新类型的配置。 创建自己的配置后。 您可以使用上面的代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM