我希望有一个资源类库,并在另一个 MSTest 类库中进行测试。 这是我的资源库中的 project.json 文件:(我的 Resx 文件在 Resources 文件夹中)
{
"version": "1.0.0-*",
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.AspNetCore.Mvc.DataAnnotations": "1.0.1"
},
"buildOptions": {
"embed": {
"include": [ "Resources/PS.ModelBase.Models.Person.fa.resx" ]
}
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}
这是我的测试方法:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Resources;
using System.Threading.Tasks;
namespace PS.ModelBaseTest
{
[TestClass]
public class PersonTest
{
[TestMethod]
public void FullNameValidateNullFirstName()
{
ResourceManager rm = new ResourceManager(typeof(PS.ModelBase.Models.Person));
string test = rm.GetString("Fisrt Name", new System.Globalization.CultureInfo("fa-IR"));
Assert.AreEqual("Fisrt Name", test);
}
}
}
当我运行测试时,出现了以下错误:
“找不到适合指定文化或中性文化的任何资源。请确保在编译时将“PS.ModelBase.Models.Person.resources”正确嵌入或链接到“PS.ModelBase”程序集中,或者所有所需的卫星程序集都可以加载并完全签名。”
我该怎么办?
更新:
好的,我通过将resx插入到Models文件夹(其中包含Person类)并将resx文件重命名为类名(如Person.en.resx)来解决了我的问题。 与project.json无关:
{
"dependencies": {
"NETStandard.Library": "1.6.0",
"Microsoft.AspNetCore.Mvc.DataAnnotations": "1.0.1"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
},
"version": "1.0.0-*"
}
但我遇到了另一个问题。我想将我的resx文件保留在资源文件夹中,而不是模型文件夹中!当位于资源文件夹中时,如何将resx文件嵌入person类中?
我遇到了第二个问题。实际上,资源文件和类必须在同一个域中。
"include": [ "Resources" ]
或者"includeFiles": [ "Resources/PS.ModelBase.Models.Person.fa.resx" ]
。 - Nkosi