![](/img/trans.png)
[英]How to Include excel file in ClickOnce publish (Visual Studio 2013)
[英]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.