如何阻止我的dll(引用)中的resx文件在我的主项目中使用



所以我有两个项目,Tester和Coder我已经在我的测试仪项目中添加了Coder.dll作为参考,问题是这两个项目都有自己的"SetUp.resx"文件用于安装,并且由于某种原因,测试仪项目使用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"

如上所示,";浏览器";值用于进行测试,因此在Coder中将存在两个测试用例,即"0";Chrome和firefox";在Tester中应该只有一个测试,即Chrome,但它仍然显示2个测试(Chrome和Firefox(,这表明它从Coder.dll中获取SetUp.resx

这就是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 + @"ConfigurationsSetUp.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;
}
}
}
}
}

最新更新