簡體   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