私が取り組んでいる C# 単体テスト アプリケーションがあります。関連するアセンブリは 3 つあります。C# アプリ自体のアセンブリ、アプリが使用する 2 番目のアセンブリ、2 番目のアセンブリが使用する 3 番目のアセンブリです。
したがって、呼び出しは次のようになります。
First Assembly ------> Second Assembly---------> Third Assembly.
3 番目のアセンブリで行う必要があるのは、2 番目のアセンブリを呼び出した最初のアセンブリの名前を取得することです。
Assembly.GetExecutingAssembly().ManifestModule.Name
Assembly.GetCallingAssembly().ManifestModule.Name
2 番目のアセンブリの名前を返します。と
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.");
}
}
}