Как удалить конфликты типов с библиотекой и исполняемым файлом, которые ссылаются друг на друга? - PullRequest
0 голосов
/ 24 мая 2011

У меня есть два разных файла, Foo1.exe и Foo2.dll.

Когда я пытаюсь использовать объект, объявленный в Foo2.dll в Foo1.exe, все работает как положено.

Когда я пытаюсь использовать объект, объявленный в Foo1.exe в Foo2.dll, все компилируется должным образом.

Но когда я пытаюсь передать объект из Foo1.exe в Foo2.dll, Foo1.exe не может скомпилировать, потому что он имеет тип, конфликтующий с объектом в Foo2.dll, которого на самом деле нет, но на который просто ссылается Foo1 .exe.

Как мне сделать так, чтобы Foo2.dll мог ссылаться на Foo1.exe, но типы не вызывают конфликтов при компиляции Foo1.exe?

Фактическое сообщение об ошибке: The type Foo in Foo1.cs conflicts with the imported type Foo in Foo2.cs

Спасибо за любую помощь!

1 Ответ

5 голосов
/ 24 мая 2011

Вам как-то удалось заставить Foo1.exe ссылаться на другую копию Foo2.dll, которая не ссылается на Foo1.exe.Потому что компилятор C # не позволит вам делать то, что вы пытаетесь сделать - создавать циклические ссылки.

Так что тот факт, что у вас даже компилируется, является случайностью, и вы должны попробовать другой подход.*

Вам нужно изолировать классы, общие для Foo1.exe и Foo2.dll, в третьей сборке, Foo3.dll, на которую ссылаются оба.Тогда Foo3.dll должен ссылаться на ни Foo1.exe, ни на Foo2.dll.

...