【问题标题】:Visual Studio Installer -- Change application resourceVisual Studio 安装程序——更改应用程序资源
【发布时间】:2011-05-17 16:58:30
【问题描述】:
基本上,我的应用程序在我的 Resources.resx 文件中包含一个用于主窗口标题的资源。我将此绑定到我的主窗口标题
Title={Binding Title, FallbackValue='My Generic Title'}
我有 2 个安装程序(每个客户一个)。这就是我现在的做法:
- 设置特定于客户 A 的标题。
- 编译应用程序。
- 为客户端 A 构建安装文件。
- 为客户 B 设置标题。
- 编译应用程序。
- 为客户端 B 构建安装文件。
有没有办法将资源设置为特定于我使用的安装程序项目?然后,之后,将值改回“默认”值?
【问题讨论】:
标签:
visual-studio
visual-studio-2010
resources
installation
【解决方案1】:
我认为你可以做到以下几点:
1) 创建两个名为 Resources.ClientA 和 Resources.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 文件,以便它将从外部获取此属性,并且只有在未设置时才设置一些默认值。
我也不确定完成任务的更简单方法,可能有一些。