【发布时间】:2013-05-01 21:53:04
【问题描述】:
我有一个包含 10 个左右项目的 webdriver 解决方案。 1 个包含所有常用方法的核心程序集/dll,以及 9 个在测试中使用这些方法的其他测试程序集。
我需要访问这 9 个程序集之一的嵌入式资源,但我需要从核心 dll 内部进行。最好的方法是什么。
namespace = webdriver.core
json.cs - reads a json file and returns it as a string
namespace = webdriver.marketplacestest
marketplace1Test.cs - calls one of the methods in json.cs such as getName();
profile.json - holds {"marketplace1" : "Amazon"}
从已知命名空间调用嵌入式资源很容易。我是这样做的:
private static string fromEmbeddedResource(string myNamespace, string myFolder, string fileName)
{
string result;
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(myNamespace + "." + myFolder + "." + fileName))
using (StreamReader reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
return result;
}
如您所见,我只是调用以下内容,并将文件作为字符串
string json = fromEmbeddedResource("WebDriver.Core", "CFG", "pid.json");
当文件嵌入到我的一个测试 dll 中时会更难。任何人都知道我如何访问或获取程序集的命名空间?我试过了……
Assembly.GetCallingAssembly().GetTypes();
但它看起来像是从 WebDriver.Core.dll 程序集而不是 WebDriver.Marketplace1.dll 程序集中提取类型。
【问题讨论】:
-
字符串 testNamespace = Assembly.GetCallingAssembly().GetName().Name;这给了我正确的名字,但我仍然在 using(StreamReader reader...
标签: c# dll webdriver .net-assembly system.reflection