Microsoft.Owin.Host.HttpListener не копируется в выходные данные сборки ссылающихся проектов

Я ссылаюсь на один проект в решении Visual Studio из другого проекта в том же решении. Проект, на который делается ссылка (проект B), имеет пакет nuget Microsoft.Owin.Host.HttpListener и, следовательно, DLL-файл, на который есть ссылка. Проект, который ссылается на проект B (Проект A) строится. Выходная папка получает все те DLL-файлы, на которые есть ссылки в Project B, кроме Microsoft.Owin.Host.HttpListener.dll, даже если она помечена как Copy Local - true.

Microsoft.Owin.Host.HttpListener.dll - единственный, с которым я сталкивался до сих пор, который отказывается копироваться в выходные данные сборки Project A как часть шага _CopyFilesMarkedCopyLocal MSBuild независимо от настроек.

Я пытался добавить его в записи в app.config, это не помогло.

Я организовал пример проекта, демонстрирующий проблему со ссылками, и загрузил его на GitHub здесь.

Вы можете свободно играть с настройками.

Я проверил соответствующие вопросы в Stackru перед тем, как задавать этот вопрос, и на них нет ответов или они не связаны.

Пожалуйста, дайте мне подсказку, как получить файл.HttpListener.dll, который будет скопирован вместе с другими файлами.dll в выходные данные проектов, как и ожидалось. Спасибо.

2 ответа

Решение

С помощью членов моей команды я смог добраться до сути проблемы. Компилятор пропускал HttpListener dll, поскольку он явно не использовался нигде в коде проектов A или B. Таким образом, я добавил следующую строку в код проекта B:

//Dummy line to bypass the optimization.
Trace.TraceInformation(typeof(Microsoft.Owin.Host.HttpListener.OwinHttpListener).FullName);

Это создало фактическую зависимость от HttpListener.dll, и оно начало включаться в выходные данные проекта А.

Да, эта глупая оптимизация ссылок совершенно глупа и совершенно незрела в отношении отражения.

В моем случае у меня та же проблема, что и у вас, и я выбрал:

      using Microsoft.Owin.Host.HttpListener;
...
    _log.Debug("Loading type: "+ typeof(OwinHttpListener) + "..."); // Hack to force copy of Microsoft.Owin.Host.HttpListener.dll on target referencing project
Другие вопросы по тегам