csc.exe и взаимозависимые сборки - PullRequest
5 голосов
/ 19 декабря 2011

Я работал над проектом, и по мере его развития я понимаю, что две части, которые нельзя объединить, взаимозависимы.

Давайте назовем эти две части a.exe и b.dll.b.dll предоставляет реализацию, которая позволяет a.exe извлекать данные, но я хочу, чтобы это была отдельная сборка, чтобы ее можно было легко заменить, чтобы a.exe связывался с различными источниками данных.

Однако, хотя a.exe необходим для ссылки на b.dll, b.dll требует нескольких функций, которые являются неотъемлемой частью a.exe.

Поскольку я компилировал - для тестирования - так как яПишу этот проект, a.exe и b.dll оба существуют, и я могу скомпилировать b.dll против a.exe и a.exe против b.dll, но как / можно ли когда-нибудь перестроить их оба из исходного кода?

Ответы [ 3 ]

5 голосов
/ 19 декабря 2011

Я бы реорганизовал вашу систему на три сборки:

  • a.exe - Main EXE ничего не должно ссылаться на это
  • b.dll - как у вас сегодня, но не ссылается на a.exe, он ссылается на c.dll
  • c.dll - должен содержать общие части / части, на которые должны ссылаться как a, так и b
4 голосов
/ 19 декабря 2011

В общем, было бы неплохо реорганизовать это и переместить общие зависимости в их собственную сборку (c.dll). Таким образом, a.exe и b.dll могут ссылаться на c.dll, и вы избежите этой циклической зависимости.

2 голосов
/ 20 декабря 2011

Вызвать csc.exe, скомпилировать исходный файл для a.exe и b.dll в a.exe, вызвать csc.exe, скомпилировать исходный код для b.dll в b.dll и ссылаться на a.exe, а затем вызвать csc.exe в последний раз, скомпилируйте исходный файл a.exe в a.exe и укажите b.dll.

...