В качестве элемента запуска не делал это для меня, я пошел вместе со следующим подходом:
Detailed explanation
Используйте класс следующий помощник:
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
public static class RuntimePolicyHelper
{
public static bool LegacyV2RuntimeEnabledSuccessfully { get; private set; }
static RuntimePolicyHelper()
{
ICLRRuntimeInfo clrRuntimeInfo =
(ICLRRuntimeInfo)RuntimeEnvironment.GetRuntimeInterfaceAsObject(
Guid.Empty,
typeof(ICLRRuntimeInfo).GUID);
try
{
clrRuntimeInfo.BindAsLegacyV2Runtime();
LegacyV2RuntimeEnabledSuccessfully = true;
}
catch (COMException)
{
// This occurs with an HRESULT meaning
// "A different runtime was already bound to the legacy CLR version 2 activation policy."
LegacyV2RuntimeEnabledSuccessfully = false;
}
}
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("BD39D1D2-BA2F-486A-89B0-B4B0CB466891")]
private interface ICLRRuntimeInfo
{
void xGetVersionString();
void xGetRuntimeDirectory();
void xIsLoaded();
void xIsLoadable();
void xLoadErrorString();
void xLoadLibrary();
void xGetProcAddress();
void xGetInterface();
void xSetDefaultStartupFlags();
void xGetDefaultStartupFlags();
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
void BindAsLegacyV2Runtime();
}
}
И прежде чем называть вещи SMO, просто проверить, что все в порядке
if (!RuntimePolicyHelper.LegacyV2RuntimeEnabledSuccessfully)
throw new Exception("Could not load SMO");
Для всех, кто downvoted, лучше обеспечить решение вместо downvoting! Или оставьте комментарий, как было предложено, когда вы спускаете вниз! – Legends
(* Я не являюсь нисходящим. *) Предположительно app.config копируется в папку вывода сборки и (например, ваша сборка запуска - 'ass.exe'), представленная как' ass.exe.config'. –
Устанавливается как «Не копировать», только exe.config находится в бункере и настроен так, как указано выше ... hm. Проект, в котором возникает ошибка, является проектом тестирования C#. Это происходит, когда доступ к коду api из Microsoft.SqlServer * .dll. Theay скомпилированы на .NET v2.0.50727. – Legends