我有一個正在處理的C#單元測試應用程序。有三個組件涉及--C#應用程序本身的組裝,應用程序使用的第二個程序集以及第二個程序集使用的第三個程序集。C#獲取調用程序集的父程序集名稱
所以調用是這樣的:
First Assembly ------> Second Assembly---------> Third Assembly.
我需要在第三組裝做的就是拳大會,被稱爲第二組件的名稱。
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.");
}
}
}
是回答這些問題有幫助嗎? –
@ChrisGessler:沒有答案是有幫助的,因爲所有人都建議使用Assembly.GetEntryAssembly(),它在這裏返回NULL。 –
除了我的,它使用StackFrames –