我需要为使用带有* .resx文件的App_GlobalResources的项目创建测试。此项目的一些方法使用* .resx文件中的值,例如Captions.resx:
result = String.Format("{0} \"{1}\"", Captions.Ownership, ownership.TitlingName);
所以当我从另一个测试项目中测试这个方法时我得到了错误:
'Could not load file or assembly 'App_GlobalResources' or one of its dependencies. The system cannot find the file specified.'
从例外的FusionLog我可以看到测试项目试图从他的Debug文件夹中加载dll。
我的资源Build Action的另一个问题是设置为Content,因此它们不会编译成.dll。所以我将App_GlobalResources从temp VS文件夹复制到测试项目调试文件夹中,但在此之后文件创建时我得到了另一个错误:
'Could not load file or assembly 'App_GlobalResources' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)'
FusionLog:
LOG: Attempting download of new URL file:///C:/f/Projects/lexserv/lexserv/MlfLexservUnitTests/bin/Debug/App_GlobalResources.DLL.
WRN: Comparing the assembly name resulted in the mismatch: NAME
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
它可能是因为dll版本,但是当我通过资源调谐器更改dll版本时,例如我仍然得到同样的错误。我知道有办法将.resx文件访问修饰符更改为public,但这不是我的解决方案。所以问题是我应该如何导入App_GlobalSource.dll来测试项目以测试调用.resx文件的方法?