[英]Visual Studio : how to embed app.config in the exe?
我有一個程序可以編譯並正常工作並使用這個app.config
文件:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
編譯程序時,它給了我兩個文件myapp.exe
和myapp.exe.config
。 啟動程序時,如果缺少myapp.exe.config
,啟動將失敗並拋出異常
混合模式程序集是針對運行時版本“v1.1.4322”構建的,如果沒有其他配置信息,則無法在 4.0 運行時中加載。
有沒有辦法將配置文件作為資源包含在應用程序中,所以我只有myapp.exe
作為 output?
您可以在運行時設置 useLegacyV2RuntimeActivationPolicy ,以下代碼直接取自該鏈接。 這個幫手 class
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();
}
}
將在運行時自動設置,您可以驗證 RuntimePolicyHelper.LegacyV2RuntimeEnabledSuccessfully 是否為真,否則處理錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.