2011-05-17 108 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文件,以便从外部使用此属性,并且只有在未设置时才设置某个默认值。

另外我不确定更简单的方法来完成您的任务,可能有一些。

相关问题