Как узнать, что нужно Microsoft.VC90.CRT.Manifest от.NET-клиента

У меня есть приложение WPF, которое ссылается на двоичные файлы в выпущенной версии нашего программного обеспечения. Однако он не создается, поскольку не может найти файл Microsoft.VC90.CRT.Manifest в папке времени выполнения. Я знаю, что это старая вещь CRT VC++ 2008. Однако у меня есть два вопроса:

[1] Как я могу узнать, для чего нужен файл манифеста, я полагаю, что здесь есть какая-то цепочка зависимостей? Все, на что я ссылаюсь, - это сборки.NET.

[2] Есть ли способ, которым я могу установить компоненты CRT 2008, чтобы мой проект собирался без необходимости находить файл манифеста (т.е. он устанавливается и находится в общем месте - WinSxS?)? Я предполагаю, что мы не должны распространять этот файл манифеста.

1 ответ

Да, я могу дать некоторые ответы на мой вопрос, даже если это не полный ответ.

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

...

1>  bin\x64\Debug\Microsoft.VC90.CRT.manifest
1>                  CopyLocal=true
1>                  FusionName=
1>                  HintPath=<path to the reference in my project that pulls in this file (indirectly)>
1>                  OriginalItemSpec=<path to the output folder>\Kitware.VTK.dll < The dll at the bottom of the chain that needs the manifest
1>                  ResolvedFrom=<path to the folder containing the referenced binaries>
1>                  SpecificVersion=False
1>                  Version=7.1.0.1009

Из этого я мог видеть, что Kitware.VTK.dll вызывал ошибку CopyLocalFiles и какие из непосредственных ссылок вызывали это. Однако я не мог видеть цепочку ссылок, которая приводит к этому. Я загрузил ссылку верхнего уровня (.dll) в dotPeek и использовал график зависимостей сборки, чтобы проверить цепочку ссылок между этими двумя библиотеками. Обратите внимание, что это работало, но не было оптимальным, и GUI действительно боролся с диаграммой зависимостей.

Теперь мне нужно выяснить, как разорвать эту цепочку или можно ли встроить манифест в сборку, которую мы контролируем.

Другие вопросы по тегам