У меня есть решение для webdriver, в котором есть около 10 проектов. 1 core assembly/dll, которая содержит все распространенные методы и 9 других тестовых сборок, которые используют эти методы в своих тестах.Get NameSpace моего тестового класса
Мне нужно получить доступ к встроенному ресурсу для одной из этих 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.
string testNamespace = Assembly.GetCallingAssembly(). GetName(). Name; что дает мне правильное имя, но я все еще получаю нулевое значение при использовании (StreamReader reader ... –