已经有另一个名为 XXX 的资源

Home Home
引用 | 编辑 sob790717
2014-02-05 15:57
楼主
推文 x0
刚刚程式专案的资源做一做不知道做了什么好事导致本来发生了类似这样的 ..

访客只能看到部份内容,免费 加入会员



献花 x0
引用 | 编辑 ebolaman
2014-02-11 00:23
1楼
  
先点 方案总管的 显示所有档案
看还有没有重复的资源档

再将 obj 资料夹全部删除,有时有诡异的 bug 这样可以解决

再编译,出现错误的话直接点两下去看程式码
喵ㄧ喵看能不能手动删除重复的 id

并参考类似问题的讨论串:
http://stackoverflow.com/questions/313718/what-could-cause-visual-studio-c-sharp-error-msb3105-duplicate-resources

并下载 Visual Studio 2010 Service Pack 1
专门修复ㄧ些旧版的 bugs 用

献花 x1
引用 | 编辑 sob790717
2014-02-11 23:24
2楼
  
obj 资料夹是暂存的一种吗?
删了会不会使专案缺东缺西?

献花 x0
引用 | 编辑 ebolaman
2014-02-12 12:33
3楼
  
下面是引用 sob790717 于 2014-02-11 23:24 发表的 : 到引言文
obj 资料夹是暂存的一种吗?
删了会不会使专案缺东缺西?

obj 类似于 object code

http://blog.itpub.net/12639172/viewspace-521345
解释道

obj目录是用来保存每个模块的编译结果,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。

obj 资料夹删除了不会影响 原始码

献花 x1
引用 | 编辑 sob790717
2014-03-25 20:23
4楼
  
关于资源问题
还有另一个疑问就是

我最近需要设计一些程式可以多语系显示的功能

目前参考了此一教学
http://www.dotblogs.com.tw/larrynung/archive/2009/04/24/8158.aspx


反过来看看自己的



好像没有

我的开发工具是VB2010 Express

目前打算制作一种多语系切换的程式需要用到



此种方法须透过在地化语系以及新增在地化资源档才能完成

献花 x0
引用 | 编辑 ebolaman
2014-03-28 00:00
5楼
  
下面是引用 sob790717 于 2014-03-25 20:23 发表的 : 到引言文
关于资源问题
还有另一个疑问就是

我最近需要设计一些程式可以多语系显示的功能

目前参考了此一教学
http://www.dotblogs.com.tw/larrynung/archive/2009/04/24/8158.aspx


反过来看看自己的

好像没有

我的开发工具是VB2010 Express

目前打算制作一种多语系切换的程式需要用到



此种方法须透过在地化语系以及新增在地化资源档才能完成

Express 似乎少很多功能,如果是学生,可以免费取得 Professional 版本

虽然多语系切换还可以用其他方式办到,但该教学是最常用,最方便的

请勿下载盗版

献花 x0
引用 | 编辑 sob790717
2014-03-28 22:13
6楼
  
下面是引用 ebolaman 于 2014-03-28 00:00 发表的 : 到引言文


Express 似乎少很多功能,如果是学生,可以免费取得 Professional 版本

虽然多语系切换还可以用其他方式办到,但该教学是最常用,最方便的

请勿下载盗版

那请问有办法在表单载入前执行
System.Threading.Thread.CurrentThread.CurrentUICulture = New Globalization.CultureInfo("en")
指令码吗?

试过几个位置都是在表单载入后才能执行这个指令码
导致切换语言都没办法切到

献花 x0
引用 | 编辑 ebolaman
2014-03-29 07:28
7楼
  
下面是引用 sob790717 于 2014-03-28 22:13 发表的 : 到引言文


那请问有办法在表单载入前执行
System.Threading.Thread.CurrentThread.CurrentUICulture = New Globalization.CultureInfo("en")
指令码吗?

试过几个位置都是在表单载入后才能执行这个指令码
导致切换语言都没办法切到

该程式码通常加在 InitializeComponent 下
要执行哪都可以,但因为不会影响已经载入的视窗,所以如果在表单载入后要切换,可以
1. 要求使用者重启程式 (建议,因为方便,不容易错)
2. 将表单重载入
3. 手动编程 (例如教学文提到的 ComponentResourceManager + 递回)

#2 和 #3 看起来不难,但是会有几个问题:
1. 处理不好的话,会和使用者目前正使用的资料冲突
例如使用者正以简体名称登入,虽然表单改成繁体,但是登入名称没改
之后用繁体名称去修改,导致资料错乱
2. 控制项的内容需要手动重载
因此函式要分隔开,专门做资料重载

因此大多数软体都是用 #1 的方式,避免设计缺陷

献花 x0