Я создал сборку с помощью инструмента ILMerge.Используйте сборку из библиотеки, созданной через ILMerge
Существует сборка (позволяет назвать ее A
), которая является частью этой упакованной сборки, которая будет использоваться другой сборкой, которая не входит в комплект поставки (позвоните по телефону B
).
Теперь я хочу создать проект, который ссылается как на упакованную сборку, так и на B
. Теперь я хотел бы сделать это:
public void Foo()
{
var obj = new Bar(); // Bar is part of `A`
var someFactory = new Factory(); // is part of `B`
someFactory.DoSomething(obj);
// compiler error here, which says I need to reference the assembly which contains `Bar`
}
Я убедился, что сборка A
, который был включен в пакет и одна ссылка на B
одинаковы.
Что-то я здесь не вижу?
Обновление с более Context
У нас есть DataModel проект, который имеет множество зависимых проектов (я знаю, что это плохо, в первую очередь, но его наследие код :-(), поэтому я хотел бы объединить все эти узлы к одному для того, чтобы использовать эту модель данных сборки более легко в нескольких растворах.
Таким образом, я не могу использовать сборку в проекте, а затем объединить ее и ожидать, что она все еще сможет использовать ее таким же образом? ('A! = Merged.A') – derape
@derape Точно. Каждый тип, на который делается ссылка, включает в себя сборку, в которой он содержится, поэтому, если вы создаете тип в другой сборке (независимо от того, как эта сборка стала, путем слияния или иным образом), вам решать эту задачу (путем переименования сборок или путем исправления решения во время выполнения или путем обновления ссылок - перекомпиляция «B» с объединенной сборкой в качестве ссылки будет другим решением). –