C # Добавление ссылки на класс в другом проекте без ссылки на проект - PullRequest
0 голосов
/ 04 марта 2019

У меня есть два проекта:

  • ProjectMain (библиотека классов)
  • LibraryProject (библиотека классов)

ProjectMain - это библиотека классов, которая должна толькобыть скомпилированным как единая библиотека, без ссылочных библиотек.Мне нужна статическая ссылка на класс из LibraryProject, НО я не хочу, чтобы сборка LibraryProject компилировалась вместе со сборкой ProjectMain.

Я пробовал «ссылочные ссылки» в Visual Studio, но это не решение, так какСборка библиотеки всегда компилируется с основной сборкой.

Существуют четкие стандартные решения этой проблемы, но я серьезно ограничен существующими требованиями к реализации.Только одна DLL может быть скомпилирована без каких-либо зависимых сборок, находящихся в папке выполнения, GAC, закрытом пути, отражении и т. Д.

Точные ограничения следующие:

  • Сборка выполняется в изолированной программной среде стороннего поставщика, она поддерживает только добавление одной сборки без прямых ссылок / отражений и т. Д. (Это ужасно, но мои руки связаны)
  • Мы бы хотели обработатьорганизация кода как можно лучше, что означает следование стандартным рекомендациям, к сожалению, из-за вышеуказанного ограничения, которое оказывается трудным.

Я хотел бы знать, есть ли способ ссылки на класс в другомпроект без компиляции / использования этой сборки классов, на которую ссылаются.Возможно, метод, в котором компилятор «встраивает» ссылочный класс во время компиляции.

1 Ответ

0 голосов
/ 04 марта 2019

Если ваша песочница не позволяет загружать другие библиотеки в AppDomain, загрузите ее самостоятельно, встроив ее.Вы можете использовать Costura.Fody для этой цели, его легко использовать / устанавливать, просто сослаться на него из nuget.

Конечно, встраивание его в каждый сценарий - безумие и часто сопровождается совершенно неясными ошибками, которые часторазрешима только путем включения трасс в regedit.

Итак, в вашем случае я бы создал два проекта:

MyDll.csproj //it is my original project, with perfect code design and etc. Lovely.

MyDll.Sandbox.csproj //this one is the same as MyDll.csproj, except it is compiled with additional Costura.Fody reference, into single dll (every reference is put inside)

Таким образом, вам просто нужно поддерживать, что файлы MyDll и MyDll.Sandbox совпадают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...