У меня есть модульное тестовое приложение С#, над которым я работаю. Здесь задействованы три сборки: сборка самого приложения C#, вторая сборка, используемая приложением, и третья сборка, используемая второй.
Итак, звонки идут так:
First Assembly ------> Second Assembly---------> Third Assembly.
Что мне нужно сделать в третьей сборке, так это получить имя сборки Fist, которая вызвала вторую сборку.
Assembly.GetExecutingAssembly().ManifestModule.Name
Assembly.GetCallingAssembly().ManifestModule.Name
возвращает имя второй сборки. а также
Assembly.GetEntryAssembly().ManifestModule.Name
вернуть NULL
Кто-нибудь знает, есть ли способ получить имя сборки первой сборки?
По требованию других пользователей здесь я помещаю код. Это не 100% код, но следуйте такому коду.
namespace FirstAssembly{
public static xcass A
{
public static Stream OpenResource(string name)
{
return Reader.OpenResource(Assembly.GetCallingAssembly(), ".Resources." + name);
}
}
}
using FirstAssembly;
namespace SecondAssembly{
public static class B
{
public static Stream FileNameFromType(string Name)
{
return = A.OpenResource(string name);
}
}
}
и метод тестового проекта
using SecondAssembly;
namespace ThirdAssembly{
public class TestC
{
[TestMethod()]
public void StremSizTest()
{
// ARRANGE
var Stream = B.FileNameFromType("ValidMetaData.xml");
// ASSERT
Assert.IsNotNull(Stream , "The Stream object should not be null.");
}
}
}