我正在使用程序集EventCalender.ddl是EventCalender.dll.我从现有应用程序复制了此程序集.它为日历提供定制功能.我想看看那个DLL的代码,并希望改变它的一些功能.怎么可能......?提前致谢.
是否可以使用带有 Evidence 参数的 Assembly.LoadFrom 重载来确保程序集具有强命名?我希望能够指定程序集名称、区域性、版本和公钥令牌。如果任何此信息不匹配,则程序集将无法加载。
我想通过将它绑定到特定环境来保护我的程序集(dll).假设我有一个dll(BizLogic.dll),我想让我的共同开发者可以在组织内使用它.但我不希望别人在我的组织外使用它.
有没有办法解决这个问题?
提前致谢.
- 穆罕默德
我有一个.NET应用程序崩溃如果我在可执行文件的同一文件夹中有MySql.Data.dll程序集但如果我移动它工作正常.同一文件夹中的不同可执行文件依赖于它,因此我需要将其保留在那里.
我该怎么做才能让应用程序忽略这个dll?我假设我可以编辑配置文件,但我似乎找不到任何人有忽略本地.dll的问题,所以我不知道该写什么.
让我更加困惑的是关于在异常细节中编写的加载程序集的部分.请注意,本地文件夹(我想忽略的)中的文件是版本6.9.9.0,并且异常表明它要加载6.9.5.0,其中加载的文件(来自GAC)是6.9.8.0.
这是我的配置文件:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="DB" connectionString="*" providerName="System.Data.EntityClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助.
************** Loaded Assemblies **************
---------------------------------------
MySql.Data
Assembly Version: 6.9.8.0
Win32 Version: 6.9.8.0
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/MySql.Data/v4.0_6.9.8.0__c5687fc88969c44d/MySql.Data.dll
----------------------------------------
Run Code Online (Sandbox Code Playgroud)
**************异常文本**************
System.IO.FileLoadException:无法加载文件或程序集MySql.Data,版本= 6.9.5.0,文化=中性公钥= c5687fc88969c44d'或它的一个依赖.定位的程序集的清单定义与程序集引用不匹配.(从HRESULT异常:0x80131040)文件名: 'MySql.Data,版本= 6.9.5.0,文化=中性公钥= c5687fc88969c44d'在System.Reflection.RuntimeAssembly._nLoad(的AssemblyName文件名,字符串的代码库,证据assemblySecurity,RuntimeAssembly locationHint, SystemCrawlMark&stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks )System.Reflection.Asombly.Loa的System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks).d(AssemblyName assemblyRef)在System.Data.Metadata.Metadata.Eetm.MetadataAssemblyHelper.d__8.MoveNext()的System.Data.Metadata.Edm.MetadataAssemblyHelper.SafeLoadReferencedAssembly(AssemblyName assemblyName)处于System.Data.Metadata.Edm.DefaultAssemblyResolver.GetAllDiscoverableAssemblies(处于System.Data.Metadata.Edm的System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources(String assemblyName,String resourceName,ICollection
1 uriRegistry, MetadataArtifactAssemblyResolver resolver) at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(String path, ExtensionCheck extensionCheck, String validExtension, …
我有一个问题,我似乎无法弄清楚如何添加对某些解决方案的引用。
在我从 Visual Studio '17 开始的大多数解决方案中,我在解决方案资源管理器中看到“参考”,但例如,对于 asp.net 核心 Web api,我得到的是“依赖关系”。每当解决方案显示“参考”时,我都可以在“参考管理器”中查看“程序集”选项卡,但对于具有“依赖项”的解决方案,我看不到它(如下例所示)。

我有 Visual Studio 2019 和一个空的.net 框架项目。我想仅通过代码构建一个 Windows 窗体项目(不使用任何模板)。
为了这个目标,我需要 System.Windows.Forms 程序集:
右键单击项目 --> 添加 --> 引用 --> COM ----> 该程序集在哪里?
ps 有一个叫做 System_windows_forms ('-' 而不是 '.')的东西,这不是我要找的。
例:
MyProgram.exe已执行.它调用调用MyClassLibrary2.dll的MyClassLibrary1.dll.如何在MyClassLibrary2.dll中确定MyProgram.exe的汇编版本是什么?
这可能吗?
谢谢.
我想创建一个具有默认权限的应用程序域,并使用默认权限将程序集加载到应用程序域中,并执行程序集内的方法.
随着代码:
CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
Run Code Online (Sandbox Code Playgroud)
到目前为止,它是好的,它的工作原理,我可以运行我给它的代码,但如果我添加这些程序集:
//parameters.ReferencedAssemblies.Add("System.Text.dll");
//parameters.ReferencedAssemblies.Add("System.Linq.dll");
Run Code Online (Sandbox Code Playgroud)
在运行时它给我一个错误说:
找不到元数据文件"System.Text".
那么我在这里做错了什么?
在我的解决方案中,我有一个第三方A.dll与另一个B.dll(特定版本=真)依赖.但我有B.dll的旧版本,它有错误:
无法加载文件或程序集'B,Version = 2.0.0.1,...'
但我有B.dll与旧版本(2.0.0.0)
那我怎么解决我的问题呢?
如何松散版本依赖?
寻找更老的力量不存在?
什么是重要的A和B是第三方.所以我无法改变它.
assemblies ×10
c# ×6
.net ×5
asp.net ×3
dependencies ×2
appdomain ×1
clr ×1
dll ×1
gac ×1
mysql.data ×1
reference ×1
reflection ×1
security ×1
winforms ×1