- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要将仅包含受支持的运行时设置的 app.config 文件嵌入到我的 exe 文件中。我尝试执行构建操作嵌入式资源,但它现在不从配置文件中读取值并且它不起作用。这是我的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
所以我的想法是在 .Net 4.0 上也运行我的 .Net 2.0 exe。有任何想法吗?
谢谢。
最佳答案
这是不可能的。如果您绝对必须拥有不带配置文件的可执行文件,最接近的方法是编写将为您运行 CLR 的非托管加载程序。
假设您有如下 C# 应用:
using System;
namespace DumpVersion
{
class Program
{
static int EntryPoint(string argument)
{
Console.Out.WriteLine(argument);
Console.Out.WriteLine(Environment.Version);
Console.In.ReadLine();
return 0;
}
static void Main()
{
EntryPoint("Main");
}
}
}
您可以像这样创建非托管 ( c++) 加载器:
#include <metahost.h>
#pragma comment(lib, "mscoree.lib")
#import "mscorlib.tlb" raw_interfaces_only \
high_property_prefixes("_get","_put","_putref") \
rename("ReportEvent", "InteropServices_ReportEvent")
int wmain(int argc, wchar_t* argv[])
{
HRESULT hr;
ICLRMetaHost *pMetaHost = NULL;
ICLRRuntimeInfo *pRuntimeInfo = NULL;
ICLRRuntimeHost *pClrRuntimeHost = NULL;
// build runtime
// todo: add checks for invalid hr
hr = CLRCreateInstance(CLSID_CLRMetaHost, IID_PPV_ARGS(&pMetaHost));
hr = pMetaHost->GetRuntime(L"v4.0.30319", IID_PPV_ARGS(&pRuntimeInfo));
if (hr != S_OK) {
hr = pMetaHost->GetRuntime(L"v2.0.50727", IID_PPV_ARGS(&pRuntimeInfo));
}
hr = pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost,
IID_PPV_ARGS(&pClrRuntimeHost));
// start runtime
hr = pClrRuntimeHost->Start();
// execute managed assembly
DWORD pReturnValue;
hr = pClrRuntimeHost->ExecuteInDefaultAppDomain(
L"c:\\temp\\TestLoading\\DumpVersion\\bin\\Debug\\DumpVersion.exe",
L"DumpVersion.Program",
L"EntryPoint",
L"hello .net runtime",
&pReturnValue);
// free resources
pMetaHost->Release();
pRuntimeInfo->Release();
pClrRuntimeHost->Release();
return 0;
}
更多信息:https://www.codeproject.com/Articles/607352/Injecting-Net-Assemblies-Into-Unmanaged-Processes
关于c# - 将 supportedRuntime 嵌入到 exe 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24270489/
假设我有一个使用 VS2008 针对 .NET 2.0 构建和编译的 WinForms 应用程序。 据我了解,在运行时,应用程序将首先尝试加载 .NET 2.0 CLR,(因为它是针对它编译的),不管
首先,我发现了一些关于这个主题的问题,但似乎没有一个能完全解决我的问题,但如果您认为它确实回答了我的问题,请随时指出现有问题。 我的问题:我正在构建依赖于 .NET Framework 3.5 或更高
以下三种场景(在exe的app.config文件中)有什么区别? 我已经阅读了有关它的 MS 文档和一些博客,但我仍然不太清楚究竟发生了什么以及何时使用。 编
我需要将仅包含受支持的运行时设置的 app.config 文件嵌入到我的 exe 文件中。我尝试执行构建操作嵌入式资源,但它现在不从配置文件中读取值并且它不起作用。这是我的配置文件:
我正在编译一个以 .NET 3.5 作为运行时的 C# 应用程序 在我指定的 app.config 中,根据 http://msdn.microsoft.com/en-us/library/w4att
我为 Outlook 2007 创建了一个 VSTO 2.0 SE 加载项。通常,它在最终用户的计算机上安装没有问题,但有时他们在 Outlook.exe 旁边有一个 Outlook.exe.conf
我们有一个支持 .NET 2.0 和 .NET 4.0 的应用程序,我们用 切换了几个依赖于框架的程序集。 .我们使用了 元素以允许应用程序使用最新的框架(如果可用)运行。但是,我们仍然需要完整的配
我有一个 WinForms 应用程序,只需 .exe 文件即可轻松部署。它使用框架 2.0,因此默认情况下它不能在 Windows 8 上运行。如果我包含一个具有以下参数的 .config 文件,它在
我有一个应用程序可以在 .Net 2.0 SP2 上正常运行,但无法在 .NET 2.0 RTM 上正常运行。 (仅供引用:调用托管 DLL 的方法时失败,该 DLL 是用于 USB 编程的 nati
我是一名优秀的程序员,十分优秀!