Можно ли создать .Net MSI / проект установки, который может добавить сборку «X» как в версию 2, так и в версию 4 .NET Framework GAC?
Я попытался, добавив вывод из 2 проектов в специальную папку GAC, например ::100100
«XTargetingV3.5.csproj»
«XTargetingV4» .csproj»
Однако я получаю следующее объяснение:
ВНИМАНИЕ: два или более объекта имеют одинаковое целевое расположение ('[gac] X \ 1.0.0.0_2752785e627d5953 \ X.dll')
ПРЕДУПРЕЖДЕНИЕ. Два или более объекта имеют одинаковое целевое расположение ('[gac] X \ 1.0.0.0_2752785e627d5953 \ X.dll')
Это также происходит, если я пытаюсь добавить модуль слияния, содержащий «X», нацеленный на одну из платформ.
Я бы хотел, чтобы мое существующее клиентское приложение, которое было разработано для версии 3.5 платформы .Net (следовательно, ищет в C: \ Windows \ Assembly для «X»), продолжает использовать этот GAC, тогда как новые клиенты встроенный в целевой v4 .Net Framework также найдет «X», посмотрев в новый GAC (C: \ Windows \ Microsoft.NET \ Assembly). Поэтому, когда «X» обновляется, установщик MSI установит «X» на оба GAC, так что клиенты v3.5 и v4 получат обновление.
Я понимаю, что могу попросить старый клиент v3.5 вместо этого использовать v4 среды выполнения (см. Перенаправление версий сборки на другой CLR / GAC ), используя:
<configuration>
<startup>
<supportedRuntime version="v4.0" />
</startup>
</configuration>
но я стараюсь не создавать app.configs для существующих клиентов.