如何停止在我的主项目中使用我的 dll(参考)中的 resx 文件?
How to stop the resx file in my dll(reference) from being used in my main project?
所以我有两个项目,Tester 和 Coder。 我在我的 Tester 项目中添加了 Coder.dll 作为参考, 问题是这两个项目都有自己的 'SetUp.resx' 文件用于设置,并且出于某种原因Tester 项目正在使用 Coder 的 'SetUp.resx' 文件而不是它自己的 SetUp.resx 文件。
Coder has a string Name "browser" whose values are "Chrome, Firefox"
Tester has a string Name "browser" whose value is "Chrome"
如上所示,
“Browser”值用于进行测试,因此在 Coder 中将有两个测试用例,即“Chrome 和 firefox”
在 Tester 中应该只有一个测试,即 Chrome 但它仍然显示 2 个测试(Chrome 和 Firefox) 这表明它从 Coder.dll
SetUp.resx 文件在 Tester
中的样子
Name | Value |Comments
Browser | Chrome |Browser to be tested with separated by Comma
BuildNumber| v2.1 |aka version
这就是我在 Tester
中为 SetUp.Designer.cs 所做的
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal SetUp() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TestProject3.Configurations.SetUp", typeof(SetUp).Assembly); //Path of Tester's SetUp.resx
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
internal static string BuildNumber {
get {
return ResourceManager.GetString("BuildNumber", resourceCulture);
}
}
internal static string Browser { //Gets string value for Browser in SetUp.resx
get {
return ResourceManager.GetString("Browser", resourceCulture);
}
}
}
这是访问resx的函数代码
internal static IEnumerable Browsers()
{
get
{
String[] browser = Configurations.SetUp.Browser.Split(",");
foreach (string b in browser)
{
yield return b;
}
}
}
谁能告诉我哪里出错了以及我的代码中应该更改什么?
我试图找到一种使用资源文件的文件路径的方法,这样测试人员就不会与编码人员的 resx 混淆。
internal static IEnumerable Browsers()
{
var enviroment = System.Environment.CurrentDirectory;
string resxFile = Directory.GetParent(enviroment).Parent.Parent.FullName + @"\Configurations\SetUp.resx";
String[] browser;
IDictionaryEnumerator dict;
string key;
using (ResXResourceSet resSet = new ResXResourceSet(resxFile))
{
dict = resSet.GetEnumerator();
while (dict.MoveNext())
{
key = (string)dict.Key;
// Retrieve resource by name.
if (dict.Key is "Browser")
{
browser = resSet.GetString(key).Split(",");
foreach (string b in browser)
{
yield return b;
}
}
}
}
}
所以我有两个项目,Tester 和 Coder。 我在我的 Tester 项目中添加了 Coder.dll 作为参考, 问题是这两个项目都有自己的 'SetUp.resx' 文件用于设置,并且出于某种原因Tester 项目正在使用 Coder 的 'SetUp.resx' 文件而不是它自己的 SetUp.resx 文件。
Coder has a string Name "browser" whose values are "Chrome, Firefox"
Tester has a string Name "browser" whose value is "Chrome"
如上所示, “Browser”值用于进行测试,因此在 Coder 中将有两个测试用例,即“Chrome 和 firefox” 在 Tester 中应该只有一个测试,即 Chrome 但它仍然显示 2 个测试(Chrome 和 Firefox) 这表明它从 Coder.dll
SetUp.resx 文件在 Tester
中的样子 Name | Value |Comments
Browser | Chrome |Browser to be tested with separated by Comma
BuildNumber| v2.1 |aka version
这就是我在 Tester
中为 SetUp.Designer.cs 所做的 private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal SetUp() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TestProject3.Configurations.SetUp", typeof(SetUp).Assembly); //Path of Tester's SetUp.resx
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
internal static string BuildNumber {
get {
return ResourceManager.GetString("BuildNumber", resourceCulture);
}
}
internal static string Browser { //Gets string value for Browser in SetUp.resx
get {
return ResourceManager.GetString("Browser", resourceCulture);
}
}
}
这是访问resx的函数代码
internal static IEnumerable Browsers()
{
get
{
String[] browser = Configurations.SetUp.Browser.Split(",");
foreach (string b in browser)
{
yield return b;
}
}
}
谁能告诉我哪里出错了以及我的代码中应该更改什么?
我试图找到一种使用资源文件的文件路径的方法,这样测试人员就不会与编码人员的 resx 混淆。
internal static IEnumerable Browsers()
{
var enviroment = System.Environment.CurrentDirectory;
string resxFile = Directory.GetParent(enviroment).Parent.Parent.FullName + @"\Configurations\SetUp.resx";
String[] browser;
IDictionaryEnumerator dict;
string key;
using (ResXResourceSet resSet = new ResXResourceSet(resxFile))
{
dict = resSet.GetEnumerator();
while (dict.MoveNext())
{
key = (string)dict.Key;
// Retrieve resource by name.
if (dict.Key is "Browser")
{
browser = resSet.GetString(key).Split(",");
foreach (string b in browser)
{
yield return b;
}
}
}
}
}