CLR项目中缺少嵌入互操作类型属性



我有一个CLR Empty Project(.NET Framework 4.6.2(。我注意到引用属性中不存在Embed Interop Types,我找不到解决方法,有办法打开它吗?看起来它只在C#上可用。

我想出了以下解决方法:

添加要嵌入到项目中的特定程序集,右键单击它,选择Properties,然后将Item Type设置为Compiled Managed Resource,并将以下代码段放在main中的第一行:

[System::STAThread]
int main()
{
System::AppDomain::CurrentDomain->AssemblyResolve += gcnew System::ResolveEventHandler(&loadEmbeddedAssembly);
}

在那里的某个地方:

System::Reflection::Assembly^ loadEmbeddedAssembly(System::Object^ sender, System::ResolveEventArgs^ args) {
System::Reflection::AssemblyName^ assemblyName = gcnew System::Reflection::AssemblyName(args->Name);
System::String^ resourceName = assemblyName->Name + ".dll";
System::IO::Stream^ stream = System::Reflection::Assembly::GetExecutingAssembly()->GetManifestResourceStream(resourceName);
array<System::Byte>^ assemblyData = gcnew array<System::Byte>((unsigned long)stream->Length);
try {
stream->Read(assemblyData, 0, assemblyData->Length);
}
finally {
if (stream != nullptr) delete stream;
}
return System::Reflection::Assembly::Load(assemblyData);
}

最新更新