Получить из «C» DLL сборка DLL «B», используемый с отражением в программном обеспечении «A»C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получить из «C» DLL сборка DLL «B», используемый с отражением в программном обеспечении «A»

Сообщение Anonymous »

Давайте рассмотрим два сценария: < /p>

У меня есть программное обеспечение «A», в котором мне нужно добавить DLL «B» в качестве плагина. Я могу легко получить к нему доступ, используя отражение. DLL «B» ссылается на DLL, называемый «C» (объединен с Costura.Fody). < /Li>
У меня есть программное обеспечение «A», которое ссылается на DLL, называемый «C».
Внутри этого DLL «C», мне нужно получить имя собрания Caller: в сценарии 1 я получу «B», в то время как в сценарии 2 я получу « /> < /ol>
Как это сделать? < /p>
Я попробовал < /p>

Код: Выделить всё

Assembly.GetEntryAssembly() 'C.dll
Assembly.GetCallingAssembly() 'A.dll
Assembly.GetExecutingAssembly() 'A.dll
Process.GetCurrentProcess().MainModule.FileName 'C.dll
< /code>
И я также попробовал итерацию через кадры Stacktrace, чтобы получить первый отличный от сборки "C": < /p>
    Dim st As New StackTrace()
Dim thisAssemblyName As String = Assembly.GetExecutingAssembly().GetName().Name

For i As Integer = 1 To st.FrameCount - 1
Dim frame = st.GetFrame(i)
Dim method = frame.GetMethod()
If method Is Nothing Then Continue For

Dim declaringType = method.DeclaringType
If declaringType Is Nothing Then Continue For

Dim asm = declaringType.Assembly

If asm.GetName().Name  thisAssemblyName Then
Return asm
End If
Next
Return Nothing
Но я заметил, что я могу получить такие вещи, как windows.forms.dll и аналогичные системные сборки ...

edit
Я попытаюсь объяснить проблему более четко. Эта библиотека была первоначально разработана для взаимодействия только с программным обеспечением A.Exe , и печатает имя вызывающей сборки.
Теперь я пытаюсь создать плагин в форме DLL (), который будет помещен в папку и доступен доступным программным обеспечением A.Exe через отражение. В этом случае, однако, c.dll больше не должен печатать сборку A.Exe , а скорее один из B.Dll .
Я хотел бы избежать прохождения сборки явно в качестве параметра.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -in-a-soft
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»