«useLegacyV2RuntimeActivationPolicy = true» не работает, когда приложение загружается с помощью Process.Start - PullRequest
0 голосов
/ 27 января 2012

У меня есть приложение, которое использует объекты управления SQL (Microsoft.SqlServer.Smo.dll), и для того, чтобы оно работало в .NET 4, мне нужно вставить этот блок в файл app.config:

<startup useLegacyV2RuntimeActivationPolicy="true">
   <supportedRuntime version="v4.0"/>
</startup>  

Это работает, но если я запускаю это приложение из другого приложения, используя

System.Diagnostics.Process.Start("myApplicationThatUsesSmo.exe")

Это не работает.LegacyV2Runtime не активирован.

Я использовал эту реализацию:

http://reedcopsey.com/2011/09/15/setting-uselegacyv2runtimeactivationpolicy-at-runtime/

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

Кто-нибудь знает, что мне не хватает?

1 Ответ

0 голосов
/ 30 января 2012

Nevermind. Файл «myApplicationThatUsesSmo.exe.config» действительно отсутствовал в папке, где запускался «myApplicationThatUsesSmo.exe».

«myApplicationThatUsesSmo.exe» задается как ссылка для «myApplicationThatCallsProcessStart.exe» и поэтому копируется в выходную папку «myApplicationThatCallsProcessStart.exe». Но его конфигурационный файл не является. Было событие сборки, копирующее этот файл, но кое-как, как он был стерт и чем все перестало работать.

Я дам этот ответ здесь, если кто-то еще столкнется с такой же ситуацией.

...