почему наша сборка не содержит всех необходимых DLL - PullRequest
0 голосов
/ 08 февраля 2010

У нас есть приложение .net 2008, которое использует два dll для удаленного доступа к серверу для получения информации. возвращенный объект. Одним из свойств этого объекта является перечисление, которое содержится в третьей dll.

По какой-то причине, когда мы строим третью dll, она не добавляется, несмотря на то, что я теперь включил в решение все три dll.

во время выполнения, когда код десериализует объект, мы получаем исключение dll not found, указывающее, что dll отсутствует, для рассматриваемой dll он содержит только перечисления (не мой дизайн)

Есть идеи, как заставить dll быть добавленным?

Я могу просто добавить dll в качестве части жгута или сервиса, но мне не нужно этого делать, так как это следует воспринимать как зависимость от основного проекта

Ответы [ 3 ]

3 голосов
/ 08 февраля 2010

Это потому, что вам не нужна DLL. Перечисление enum компилируется в его числовое значение, в IL нет ссылки на тип. Например, это:

public enum Numbers { Zero, One, Two, Three }

static void Main(string[] args) {
  var n = Numbers.One;
}

компилируется в это:

  IL_0001:  ldc.i4.1          ; NOTE: constant 1 being used here
  IL_0002:  stloc.0

Компилятор автоматически отфильтровывает директивы using для сборок, которые фактически не используются.


Видимо, вы нашли в этом морщину, очень важно, чтобы вы добавили подобные детали в свой вопрос. Да, двоичная сериализация поместит ссылку на тип в сериализованные данные, что компилятор не сможет увидеть. Единственный обходной путь для этого - убедиться, что сборка скопирована в каталог сборки. Проект + Добавить существующий элемент, перейдите к DLL. Выберите его в окне обозревателя решений, установите для свойства «Копировать в выходной каталог» значение «Копировать, если новее».

1 голос
/ 08 февраля 2010

используйте команду события после сборки, чтобы добавить dll в каталог bin.

0 голосов
/ 08 февраля 2010

У вас есть флаг "Копировать локальный", установленный на true в ссылочных свойствах?

...