为了GetGlobalResourceObject()在Visual Studio 2008中使用,我必须将.resx文件复制到Visual Studio的App_GlobalResources文件夹中.在预编译应用程序之后,资源文件将被编译到相应的附属程序集中,并按\bin\文化名称部署在该文件夹下.一切正常.
但是,在预编译应用程序后,我无法添加新的附属程序集.我做的是:
创建了一个卫星组件:
resgen resources.applicationresources.es-ES.resx resources.applicationresources.es-ES.resources al/t:lib/culture:es-ES /embed:resources.applicationresources.es-ES.resources /out:App_GlobalResources.resources.dll
创建文件夹\bin\es-ES\并在那里部署.dll文件.
遗憾的是,新添加的附属程序集未被识别GetGlobalResourceObject(),后者退回到默认(英语)资源.资源文件似乎没有任何问题,因为如果我将相同的.resx文件复制到App_GlobalResources应用程序中,然后编译应用程序,一切正常.
我错过了什么?BTW我的项目类型是网站而不是网络应用程序项目.
我有一个使用VS 2005和.net framework 2.0开发的现有winforms应用程序.
现在我们需要全球化这个应用程序.这两个地区是德语和日语.
我知道我们可以使用form的localize属性来创建本地化的表单资源,并且可以为消息框中使用的字符串,异常等提供其他资源文件.
我想知道全局化现有应用程序的最佳方法,我应该在每个表单上设置localize属性,还是有一些工具可以提取标签名称和控件名称...日期格式,货币,等等
我们还在代码中的某些地方使用了一些复合字符串来连接消息字符串,这些字符串如何被本地化?
在开始全球化活动之前,我们将把应用程序迁移到VS 2008和.net framework 3.5.
我想比较两个不同版本的对象,并在UI中显示它们的差异.
首先,我调用一个方法来了解这两个对象之间是否存在任何差异
方法是:
public bool AreEqual(object object1,object object2, Type comparisionType)
Run Code Online (Sandbox Code Playgroud)
如果上面的方法返回true,我调用GetDifferences方法来获得以下差异:
public ObjectDifference[] GetObjectDifferences(object object1, object object2, Type comparisionType)
{
ArrayList memberList = new ArrayList();
ArrayList differences = new ArrayList();
memberList.AddRange(comparisionType.GetProperties());
memberList.AddRange(comparisionType.GetFields());
for (int loopCount = 0; loopCount < memberList.Count; loopCount++)
{
object objVal1 = null;
object objVal2 = null;
MemberInfo member = ((MemberInfo)memberList[loopCount]);
switch (((MemberInfo)memberList[loopCount]).MemberType)
{
case MemberTypes.Field:
objVal1 = object1 != null ? ((FieldInfo)memberList[loopCount]).GetValue(object1) : null;
objVal2 = object2 != null ? ((FieldInfo)memberList[loopCount]).GetValue(object2) : null;
break; …Run Code Online (Sandbox Code Playgroud)