Ссылка на блоки создается с ILMerge в проектах Visual Studio

У меня есть решение в Visual Studio с 5 проектами. Они:

  • Foo.Core: Базовая функциональность
  • Foo.Api: Сгенерированный код создается сверху ядра
  • Foo.Web: Определенные для сети расширения
  • Foo.Web.Mvc: MVC-определенные расширения
  • Newtonsoft.Json: Сторонняя библиотека

Я хочу использовать ILMerge для слияния Foo.Core, Foo.Api и Newtonsoft.Json в единственный блок, названный Foo. Это - легкая часть.

Проблема, с которой я сталкиваюсь, является этим Foo.Web и Foo.Web.Mvc обе потребности сослаться на все три из объединенных блоков.

Если я сошлюсь на исходные блоки, то у них будут недопустимые ссылки после того, как я сделаю ILMerge.

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

Я попытался создать названный проект Foo, который ссылается на 3 объединенных блока и заменяет его собственный вывод блоком ILmerged, но это, кажется, не работает вообще.

Существует ли надежный способ сделать это?

5
задан Daniel Schaffer 6 May 2010 в 03:27
поделиться

1 ответ

ILMerge предназначен для создания нового пакета/компонента в виде коробочного «продукта» (API, Program...) для упрощения управления сборками, таких как развертывание, ссылки на GAC, видимость сборки и многое другое либо для использования «все в одном», либо для внешнего использования, а не смешанного.

Я предполагаю, что вам нужно настроить PostBuildEvent на вашей основной сборке/проекте (Foo.Api?), если у вас есть один или PreBuildEvent в ваших проектах Foo.Web и Foo.Web.Mvc для создания объединенного проекта Foo, на который будут ссылаться в ваших проектах Foo.Web и Foo.Web.Mvc как на внешнюю сборку.

Вы можете сделать это более интегрированным в Visual Studio, настроив задачу MsBuild. Образец (из Перелив стека).

2
ответ дан 14 December 2019 в 19:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: