2011-05-17 58 views
1

基本上,我的應用程序使用Resources.resx文件中主窗口標題的資源。我將它綁定到我的主窗口標題Visual Studio安裝程序 - 更改應用程序資源

Title={Binding Title, FallbackValue='My Generic Title'} 

我有2個安裝程序(每個客戶端一個)。這是我現在就做:

  1. 設置標題特定客戶A.
  2. 編譯應用程序。
  3. 建立客戶A.
  4. 標題組特定客戶B.
  5. 編譯應用程序的安裝文件。
  6. 建立客戶B.

有什麼辦法來設置資源爲特定的安裝項目,我使用的安裝文件嗎?然後,之後,將該值更改回「默認」值?

回答

2

我認爲你可以做到以下幾點:

1)創建名爲Resources.ClientAResources.ClientB兩個組件。它們應該具有完全相同的內容(相同名稱空間中的相同類),但該內容應該是相應客戶端的客戶端特定的。例如,我已經添加下面的類僅僅是一個例子:

// assembly for ClientA : 
namespace Resources 
{ 
    public class Class1 
    { 
     public static string Text { get { return "Client A text"; } } 
    } 
} 

// assembly for ClientB : 
namespace Resources 
{ 
    public class Class1 
    { 
     public static string Text { get { return "Client B text"; } } 
    } 
} 

2)打開你的主項目文件(的csproj),並添加:

<PropertyGroup> 
    <ClientToken>ClientA</ClientToken> 
</PropertyGroup> 

3)在同一文件下添加引用:

<ItemGroup> 
    <ProjectReference Include="..\Resources.$(ClientToken)\Resources.$(ClientToken).csproj"> 
     <Name>Resources.$(ClientToken)</Name> 
    </ProjectReference> 
</ItemGroup> 

現在通過替換ClientToken屬性,您可以替換客戶端特定的程序集。您也可以將此屬性指定爲持續集成過程的一部分,但可能需要稍微修改csproj文件,以便從外部使用此屬性,並且只有在未設置時才設置某個默認值。

另外我不確定更簡單的方法來完成您的任務,可能有一些。

相關問題