在同一个解决方案下,如果有两个或者两个以上的项目同时存在的时候。假设两个项目同时存在(A,B)
然后在A项目的全局资源文件下手动建一个全局资源项。GA
在B项目下的全局资源文件下也建一个全局的资源项目。GB(注意,A项目下的资源项名称和B下的名称不一样)然后在A项目中某个窗口(FA)中引用这个全局资源项(GA)。到此为止还算正常。
但是,在B项目中的某个窗口(FB)中引用B项目的全局资源项(GB)的时候,A项目下的窗口(FA)中的design文件中关于全局资源项(GA)就会发生窜改 ,全部变成(GB)。
如果在这个时候你去把A项目下的FA窗口design文件中的GB全部替换成GA,然后保存,你会发现在B项目中的FB中的GB居然全部窜改成(GA)
请问有人遇到这种情况没有?具体发生这种情况是在做多语言版本的时候。

解决方案 »

  1.   

    这个可能我解释的有点问题。在一个项目的Properties文件夹下面有一个Resources.resx文件,这个文件就是这个项目的全局资源文件,在这个文件下定义的任何项,都可以在这个项目中使用,所以我把它叫做全局资源项。同样在这个项目下的一个窗体,winform的窗体你点开后,至少都包含两个文件FrmName.Designer.cs和FrmName.resx,在FrmName.resx中定义的项是提供给这个窗体使用的。在窗体显示的时候就是通过Designer.cs的代码去动态的调用resx的资源来显示winform的窗体的界面内容,比如某个按钮上面的值,标签上面的数据等等那么我这里想要一个资源项,在同个项目下的多个窗体共用的时候,就可以把这个项在全局的资源文件Resources.resx中定义,然后在多个窗体中使用。
    问题就是上面这里,如果单个项目下使用都不会出现任何问题,如果多个项目同时采用上面所说的操作的话就会产生我最开始说的那种情况(自己项目引用自己的全局资源文件中的项,不是跨项目引用,但是多个项目放在一个解决方案下面)
      

  2.   

    LZ可以试一下,在A项目里面实现一个public的类A,该类的使用最主要的是实现对A项目里面的全局资源的读出与修改,同时在B项目里同样建针对资源操作的类,那么无论在a项目里还是在b项目里只要将对应的类实例化后就可以进行对资源的修改了PS:该方法未经过实践,LZ可以尝试一下
      

  3.   

    分别用记事本打开FA.rex和FB.rex比较最底下的value
    不行就这样,先在项目A中引用A的资源,把rex中value复制到一个新txt中
    然后B项目引用B的资源,再把A的FA.rex复制回去。
      

  4.   

    回7楼,是在用资源文件做多语言版本的时候。主要用于存储不同语言版本下的图片,字符串信息等等回3楼,资源文件是一个预先编译的资源项(比如我先在里面写入一些字符串,然后在英文版下加载英文的字符串,中文下加载中文的字符串),我只需要读取它的值就可以,不需要修改,而且它本身也不允许在代码中更改。回5楼,你说的方法我没使用过,具体不太清楚,能否详细介绍一下,谢谢
    具体的窜改代码我也拷贝上来,另外Designer文件和resx实际上是不允许用户手动去更改它的项目的,它是窗体的UI设计的时候自动去更改的。this.q_lkedtCarr.Properties.NullText = global::Cargo.UI.Forwarder.AirImport.Properties.Resources.RG_FreightParpeitAI;这是Designer文件中代码,我说的窜改也是在这里,.net窗体自动去窜改上面这个地方的值,q_lkedtCarr是一个DEV(DevExpress 7.1)的下拉列表控件(DevExpress.XtraEditors.LookUpEdit)