小编MZB*_*MZB的帖子

相同的源,具有不同资源的多个目标(Visual Studio .Net 2008)

一组软件产品的区别仅在于其资源字符串,二进制资源以及Visual Studio安装项目使用的字符串/图形/产品密钥.创建,组织和维护它们的最佳方法是什么?

即所有产品基本上由图形,字符串和其他资源数据定制的相同核心功能组成,以形成每个产品. 想象一下,您正在创建一组产品,如"Excel for Bankers",Excel for Gardeners","Excel for CEOs"等.每个产品都具有相同的功能,但名称,图形,帮助文件,包含的模板等不同.

构建这些环境的环境是:vanilla Windows.Forms/Visual Studio 2008/C#/ .Net.

理想的解决方案很容易维护.例如,如果我引入一个新的字符串/新资源项目,我没有添加资源,应该在编译时失败,而不是运行时.(随后产品的本地化也应该是可行的).

希望我错过了做这一切的明显而简单的方法.它是什么?

============澄清================

"产品"是指由安装程序安装并出售给最终用户的软件包.

目前我有一个解决方案,包括多个项目(包括安装项目),它构建一组程序集并创建一个安装程序.

我需要生产的是多个产品/安装程序,它们都具有类似的功能,它们是从同一组程序集构建的,但其中一个程序集使用的资源集不同.这样做的最佳方法是什么?

------------ 95%的解决方案-----------------

根据Daminen_the_unbeliever的答案,每个配置的资源文件可以实现如下:

  1. 创建一个类库项目("Satellite").
  2. 删除默认的.cs文件并添加文件夹("默认")
  3. 在"MyResources"文件夹中创建资源文件
  4. 属性 - 将CustomToolNamespace设置为适当的值(例如"XXX")
  5. 确保资源的访问修饰符是"Public".添加资源.编辑源代码.请参阅代码中的资源XXX.MyResources.ResourceName)
  6. 为每个产品变体创建配置("ConfigN")
  7. 对于每个产品变体,创建一个文件夹("VariantN")
  8. 将MyResources文件复制并粘贴到每个VariantN文件夹中
  9. 卸载"Satellite"项目,然后编辑.csproj文件
  10. 对于每个"VariantN/MyResources" <Compile><EmbeddedResource>标记,添加一个 Condition="'$(Configuration)' == 'ConfigN'" 属性.
  11. 保存,重新加载.csproj,你就完成了......

这将创建一个每配置资源文件,可以(可能)进一步本地化.为缺少资源的任何配置生成编译错误消息.资源文件可以使用标准方法进行本地化(创建第二个资源文件(MyResources.fr.resx)并像以前一样编辑.csproj).

这是95%解决方案的原因是用于初始化表单的资源(例如表单标题,按钮文本)不能以相同的方式轻松处理 - 最简单的方法似乎是用来自附属程序集的值覆盖这些资源.

.net c# visual-studio-2008

13
推荐指数
1
解决办法
8627
查看次数

如何以编程方式确定Jet数据库引擎类型

我有一个程序需要升级它打开到JET Version4.x的任何Access(Jet)数据库,如果它还不是那个版本.(这样可以使用SQL-92语法功能)

升级(相对)容易.调用JRO.JetEngine对象的CompactDatabase方法(如此处所述)应该可以解决问题,但在此之前,我需要确定是否需要升级.如何确定Jet OLEDB:现有数据库的引擎类型?这可以从开放的OleDBConnection确定吗?

注意:

  1. 我说的是数据库版本,而不是Jet库版本.
  2. C#或.Net解决方案非常感谢.
  3. 这是一个使用Jet引擎的应用程序,而不是Access应用程序.

.net c# ms-access jet

10
推荐指数
1
解决办法
8665
查看次数

在Visual Studio 2008中禁用派生类的Designer

我使用VS2008设计器从Windows.Form类派生了A类.当我在Visual Studio解决方案资源管理器中双击文件名时,表单设计器将打开.这是期望的行为.

我有一个第二类B,派生自A(手动).这个类是纯代码 - 它添加了一些功能,但表单是相同的 - 但如果我在Visual Studio解决方案资源管理器中双击它的文件名,它将打开表单设计器.这是不希望的行为,特别是因为我需要生成类似的派生类CZ.

有没有办法强制文件始终在代码编辑器中打开?我知道有两个建议的解决方法:

  1. 给B类属性:[System.ComponentModel.DesignerCategory("")]

    根据各种帖子,这似乎在过去有效,但似乎对我的情况没有任何影响.VS环境仍尝试为该类打开表单设计器.

  2. 将源文件重命名为significname.Designer.cs

    这......好吧,它不是很好,是吗?

解决方案(1)是否还能运作?如果是这样,我可能做错了什么?

还是有其他解决方案吗?

visual-studio-2008 windows-forms-designer

6
推荐指数
1
解决办法
501
查看次数

如何在两个返回布尔值的并行线程上用Java进行短路评估?

我正在寻找逻辑上等同于以下问题的指导:

public boolean parallelOR() {
    ExecutorService executor = Executors.newFixedThreadPool(2);
    Future<Boolean> taskA = executor.submit( new SlowTaskA() );
    Future<Boolean> taskB = executor.submit( new SlowTaskB() );

    return taskA.get() || taskB.get(); // This is not what I want
    // Exception handling omitted for clarity
 }
Run Code Online (Sandbox Code Playgroud)

上述结构给出了正确的结果,但是即使从taskB完成后结果已知,总是等待taskA完成.

有没有更好的结构,如果任何一个线程返回true而不等待第二个线程完成,它将允许返回一个值?

(涉及的平台是Android,如果这会影响结果).

java lazy-evaluation short-circuiting java.util.concurrent threadpool

6
推荐指数
1
解决办法
247
查看次数

在Rails 4中生成样式表和javascript文件的列表或路径

我正在编写一个使用自定义缓存清单文件的Rails4应用程序,该文件需要包含对所有必需的Javascript和CSS文件的引用.由于应用程序的性质,无法使用Rack Offline gem.

stylesheet_link_tagjavascript_include_tag电话产生正确的文件列表(由资产产生的管道),但在HTML代码嵌入其中.

有没有办法获得控制器中所有已编译的javascript和样式表文件的路径?

例如.

/assets/custom.css?body=1
/assets/incidents.css?body=1
/assets/users.css?body=1
/assets/application.css?body=
/assets/jquery.js?body=1
/assets/bootstrap/affix.js?body=1
...
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails sprockets asset-pipeline ruby-on-rails-4

5
推荐指数
1
解决办法
911
查看次数

Rails 4 中是否可以向 LEFT OUTER JOIN 添加条件?

鉴于此结构:

class Account < ActiveRecord::Base
    has_many :users
    has_many :teams
    validates :name, presence: true
end

class User < ActiveRecord::Base
    belongs_to :account
    has_and_belongs_to_many :teams
    validates :name, presence: true
end

class Team < ActiveRecord::Base
    belongs_to :account
    has_and_belongs_to_many :users
    validates :name, presence: true
end
Run Code Online (Sandbox Code Playgroud)

目标是获取帐户的所有团队 ID/名称的列表/数组,以及指示给定用户是否属于该团队的标志。

在 SQL 中我可以通过以下方式得到这个结果:

SELECT teams.id, teams.name, 
     teams_users.team_id IS NOT NULL AS member FROM teams 
    LEFT OUTER JOIN teams_users ON 
        (teams.id = teams_users.team_id AND team_users.user_id = ?)
    WHERE teams.account_id = ?
Run Code Online (Sandbox Code Playgroud)

有Rails 4 / ActiveRecord 方法可以获得相同的结果吗?我所做的每一次尝试都将teams_users.user_id = ? …

ruby-on-rails ruby-on-rails-4 rails-activerecord

5
推荐指数
1
解决办法
5055
查看次数

为什么 Intellisense 不适用于一个单元测试项目?

我有一个 Visual Studio 2008 解决方案,它构建了一个 C# 类库(项目 X)和 C# Windows 应用程序(项目 Y)。

在 C# 类库 (XTEST) 的单元测试项目中,Intellisense 按预期工作并自动完成类的名称等。

在 windows 应用程序 (YTEST) 的单元测试项目中,Intellisense 已停止工作,仅使用访问器类的名称自动完成,而不是实际类的名称。Intellisense 还将许多类名报告为未知/未定义。这些出现在错误选项卡中,但在编译后消失。

可能的相关事实:

  • 项目都正确构建,并且测试运行。
  • 所有编程均使用 C#、.Net 2.0 Framework、VS 2008 SP1。
  • 它曾经工作......!
  • Project Y 已转换为 VS 2010,然后一度转换回 V20008。其他项目可能已经被转换,然后也被转换回来。

任何有灵感的读者能指出我在 YTEST 项目中修复 Intellisense 的正确方向吗?

回答

原来是项目 obj 目录中的 .cache 文件有问题。删除这些解决了问题。

intellisense unit-testing visual-studio-2008 visual-studio

4
推荐指数
1
解决办法
4262
查看次数

在Rails 4.2中,如何将整数转换为枚举?

在Rails 4.2中我可以写:

class Task < ActiveRecord::Base
  enum priority: { normal: 50, low: 0, high: 100 }
end
Run Code Online (Sandbox Code Playgroud)

如果我有一个SQL查询(由于不明原因)将优先级作为整数返回,是否有一种简单的方法将该整数转换为其相应的枚举值,例如.:high

(显然我可以从值中查找键Task.priorities,或者定义我自己的反向索引,但可能这已经在Rails的某处实现了......)

ruby-on-rails-4 rails-activerecord

4
推荐指数
1
解决办法
1023
查看次数