Tag: .net assembly

从应用程序的资源加载.NET程序集并从内存运行它,但不终止主/主机应用程序

介绍 我正在使用David Heffernan共享的下一个C#代码示例, 从应用程序的资源加载.NET程序集并从内存运行它 : Assembly a = Assembly.Load(bytes); MethodInfo method = a.EntryPoint; if (method != null) method.Invoke(a.CreateInstance(method.Name), null); 在这里,我只是在VB.NET中分享我正在使用的改编: Public Shared Sub Execute(ByVal resource As Byte(), ByVal parameters As Object()) Dim ass As Assembly = Assembly.Load(resource) Dim method As MethodInfo = ass.EntryPoint If (method IsNot Nothing) Then Dim instance As Object = ass.CreateInstance(method.Name) method.Invoke(instance, […]

我怎么能看到我的集会的强名?

我有一个项目,我为它创建了一个强名称密钥文件。 我怎么知道我的集会的强名是什么? 这似乎应该是显而易见的,但我找不到任何参考。

C#中已签名程序集的公钥结构是什么?

使用此代码检索公钥字节… var pubKey = AppDomain.CurrentDomain.DomainManager.EntryAssembly .GetName().GetPublicKey(); 密钥的开头(前32个字节)的这种常见结构是什么? 它不是ASN.1,它可能不是变量。 我可以谷歌并获得重复。 // 00 24 00 00 04 80 00 00 94 00 00 00 06 02 00 00 00 24 00 00 52 53 41 31 是全部逆转还是只是其中的一部分(例如最后的模数)? 52 53 41 31是一串RSA1 。 我的密钥模数是1024位,所以我一直在寻找描述长度的东西。 0x0400 ( 00 04 BE)为1024(位), 0x80为128(字节,1024/8)。 // 00 04 00 00 01 00 01 […]

对于同一.NET库的不同目标框架版本,程序集guid属性是否有所不同?

我正在用C#开发一个.NET库,它必须解决一系列广泛的目标框架。 我想生成一个nuget包,可以根据目标项目的设置正确安装。 为了实现这一点,我使用多个.csproj文件。 他们每个人都在寻址一个特定的目标框架(例如MyLibrary.net45.csproj会在bin/*/net45创建二进制文件,MyLibrary.netstandard1.2.csproj会在bin/*/netstandard1.2创建输出,所以上)。 然后我用上面项目的输出创建一个nuget包。 在此阶段,不同的.csproj文件重用相同的AssemblyInfo.cs文件,从而在那里使用共享设置。 我一直想知道所有不同的目标框架对[assembly: Guid(“…”)]属性使用相同的值是否正确,或者每个目标框架二进制文件是否应该使用自己的独特框架构建?

将DLL加载到具有已知唯一公共接口的单独AppDomain中

我需要在另一个域中加载.dll(插件)。 在主应用程序中,我对插件类型一无所知,只是他们用一些方法实现了通用接口ICommonInterface。 因此,这段代码无济于事,因为我无法创建具有接口类型的实例。 AppDomain domain = AppDomain.CreateDomain(“New domain name”); //Do other things to the domain like set the security policy string pathToDll = @”C:\myDll.dll”; //Full path to dll you want to load Type t = typeof(TypeIWantToLoad); TypeIWantToLoad myObject = (TypeIWantToLoad)domain.CreateInstanceFromAndUnwrap(pathToDll, t.FullName); 我的问题是我如何在新域中加载程序集并获取实例,如果我只知道实现我想要创建的类型的接口名称。 更新:这是我的代码:MainLib.dll namespace MainLib { public interface ICommonInterface { void ShowDllName(); } } PluginWithOutException.dll […]

如何使用ICLRStrongName :: StrongNameSignatureVerificationEx方法识别延迟签名的程序集

任何人都可以建议如何使用ICLRStrongName :: StrongNameSignatureVerificationEx方法来识别延迟签名的程序集。 我在互联网上找不到任何例子。 我不明白如何使用这种方法。 请不要向我推荐任何链接,我对网上提供的不同建议和不同链接感到沮丧。 任何人都可以为此提供代码示例。

如何使用另一个程序集的内部类

我有一个第三方程序集,我想在我的新C#项目中使用它的Internal类。 可能吗? 真的很感激任何一个例子

创建COM互操作类的实例

我试图使用C#在我的程序中打开CorelDRAW。 到目前为止,我已经能够通过引用适当的com库和调用来实现 CorelDRAW.Application draw = new CorelDRAW.Application(); draw.Visible = true; 但是,我希望我的程序能够与支持互操作的任何版本的CorelDRAW一起使用。 我试图在运行时使用reflection来加载互操作库,其中可以为正确的版本选择特定的dll。 从环顾四周,我尝试了以下内容。 string path = “Interop.CorelDRAW.dll”; Assembly u = Assembly.LoadFile(path); Type testType = u.GetType(“CorelDRAW.Application”); if (testType != null) { object draw = u.CreateInstance(“CorelDRAW.Application”); FieldInfo fi = testType.GetField(“Visible”); fi.SetValue(draw, true); } 该程序在u.CreateInstance…失败u.CreateInstance…失败,因为CorelDRAW.Application是一个接口,而不是一个类。 我还尝试用CorelDRAW.Application替换CorelDRAW.Application ,因为当我浏览Interop.CorelDRAW作为资源时可用,但随后u.getType…失败。 我怎样才能让它发挥作用? 谢谢!

migrate.exe忽略绑定重定向

我试图从EntityFramework上运行特定DLL上的migrate.exe应用程序。 此DLL引用Microsoft.Azure.KeyVault.WebKey nuget包。 当我尝试运行命令时 ./migrate MyProject.Data /startUpDirectory=C:\myDir /startUpConfigurationFile=C:\myDir\Redirect.config 我收到以下错误 错误:无法加载文件或程序集“Newtonsoft.Json,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6ae ed”或其依赖项之一。 定位的程序集的清单定义与程序集引用不匹配。 (HRESULT除外:0x80131040) 通常我会说这是因为它正在寻找Newtonsoft.Json第6版而无法找到它。 但我有一个绑定重定向指向最新版本。 所以,我不明白为什么这不会重定向到版本9.0.0.0 ,它只查找版本6.0.0.0 。 我已经反编译了Microsoft.Azure.KeyVault.WebKey.dll ,我可以看到它正在引用版本6.0.0.0所以这是为什么它正在寻找该版本,但我不明白为什么它不重定向。

在ASP.NET Core 1.0中引用库(vNext)

我正在学习ASP.NET Core 1.0(vNext)。 考虑到这一点,我有一个结构如下的解决方案: MySolution src MyLibrary MyClass.cs project.json MyWebSite Startup.cs project.json 我正在使用dnu build从命令行成功编译MyLibrary 。 我运行了生成MyLibrary.1.0.0.nupkg dnu pack 。 还有两个文件夹: dnx451和dnxcore50 ,它们都包含MyLibrary.1.0.0.dll 。 我想在MyWebSite使用MyLibrary ,但是,我很困惑。 如何将MyLibrary “包含”到MyWebSite ? 我手动复制.dll文件吗? 如果是这样,哪一个? 我应该使用nupkg文件吗? 这是一个私有程序集,我不想通过NuGet在全局发布它。 我在MyWebSite/project.json放入什么来引用MyLibrary程序集?