Visual Studio安装程序 - 更改应用程序资源

时间:2011-05-17 16:58:30

标签: visual-studio visual-studio-2010 resources installer

基本上,我的应用程序的资源是我的Resources.resx文件中主窗口的标题。我把它绑定到我的主窗口标题

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

我有2个安装程序(每个客户一个)。这就是我现在这样做的方式:

  1. 将标题设置为特定于客户端A.
  2. 编译应用程序。
  3. 构建客户端A的安装文件。
  4. 将标题设置为特定于客户端B.
  5. 编译应用程序。
  6. 构建客户端B的安装文件。
  7. 有没有办法将资源设置为我使用的安装程序项目?然后,然后将值更改回“默认”值?

1 个答案:

答案 0 :(得分: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文件,以便从外部获取此属性,并且只有在未设置该属性时才设置一些默认值。

此外,我不确定完成任务的简单方法,可能还有一些。

相关问题