一组软件产品的区别仅在于其资源字符串,二进制资源以及Visual Studio Setup项目使用的字符串/图形/产品密钥。创建,组织和维护它们的最佳方式是什么?相同来源,具有不同资源的多个目标(Visual Studio .Net 2008)
即所有产品基本上由图形,字符串和其他资源数据定制的相同核心功能组成,以形成每个产品。 想象一下,您正在创建一系列产品,如“银行家的Excel”,“园丁的Excel”,“首席执行官的Excel”等。每个产品具有相同的功能,但名称,图形,帮助文件,包含的模板等不同。
中,这些正在兴建的环境是:香草Windows.Forms的/ Visual Studio 2008中/ C#/ .NET
如果我介绍一个新的字符串理想的解决方案将是很容易保持如。 /新的资源项目我没有添加资源,应该在编译时失败,而不是运行时(并且后续产品的本地化也应该是可行的)
希望我已经错过了这一切的这种盲目显而易见的方式。它是什么?
============澄清(S)=====
所谓 “产品” 我指的是包由安装程序安装并销售给最终用户的软件。
目前我有一个解决方案,由多个项目(包括一个安装项目)组成,它构建一组程序集并创建一个安装程序。
我需要制作的是多个产品/安装程序,它们都具有类似的功能,它们是从同一套程序集构建而成,但其中一个程序集使用的资源集不同。这样做的最好方法是什么?
------------ 95%的解决方案-----------------
基于Daminen_the_unbeliever的答案,一个资源文件每个配置可以实现如下:
- 创建一个类库项目(“卫星”)。
- 删除默认的cs文件,并添加一个文件夹(“默认”)
- 文件夹中创建一个资源文件“为MyResources”
- 属性 - 设置CustomToolNamespace的东西 适当的(如“XXX”)
- 确保资源的访问修饰符是“公共”。添加 的资源。编辑源代码。 参考资源,你的代码 为XXX.MyResources.ResourceName)
- 为每个产品变型(“ConfigN”)
- 对于每个产品结构的变形,创建一个文件夹(“VariantN”)
- 复制并将MyResources文件粘贴到每个VariantN文件夹中
- 卸载“Satellite”项目并编辑。csproj文件
- 对于每个“VariantN/MyResources”
<Compile>
或<EmbeddedResource>
标记, 添加Condition="'$(Configuration)' == 'ConfigN'"
属性。 - 保存,重新加载的.csproj,你就大功告成了...
这将创建一个每个配置资源文件,它可以(大概)进一步本地化。编译错误消息是针对缺少资源的任何配置生成的。资源文件可以使用标准方法进行本地化(创建第二个资源文件(MyResources.fr.resx)并像以前一样编辑.csproj)。
这是一个95%解决方案的原因是,用于初始化表单(例如表格标题,按钮文本)的资源不能以相同的方式轻松处理 - 最简单的方法似乎是用来自卫星组件。
这个问题有点不清楚。我真的建议你回顾一下你最初的问题,并重新发布在Visual Studio中使用技术术语以及隔离你的问题。 – Roast 2010-03-01 19:57:45
补充说明。目前正在根据构建配置编辑.csproj文件以包含替换资源文件。凌乱保持。有人知道这是否实用? – MZB 2010-03-01 23:29:19
另外考虑创建一个工具来比较资源,以确保两个文件中存在相同的资源集合以减少回归测试...任何人都知道这样的工具是否存在? – MZB 2010-03-03 21:45:56