C# 通过配置加载依赖程序集
我有一个visualstudio项目,运行非常好。 但是,对于将不同的DLL放在不同的文件夹中的部署,出现了一个新的客户机需求 我们有一个框架dll,可以在不同的项目中使用。此框架dll依赖于某些第三方dll。因此,当我从我的项目中使用这个dll时,每个依赖的dll都会复制到构建时的本地,因为CopyLocal属性为true 但现在有了新的要求,我们不能将CopyLocal属性设置为True。客户机不需要任何dll的本地副本,而是希望在某个位置使用与框架相关的dll。当我这样做时,依赖的DLL不会被隐藏 我知道我有两个选择:C# 通过配置加载依赖程序集,c#,visual-studio,deployment,frameworks,C#,Visual Studio,Deployment,Frameworks,我有一个visualstudio项目,运行非常好。 但是,对于将不同的DLL放在不同的文件夹中的部署,出现了一个新的客户机需求 我们有一个框架dll,可以在不同的项目中使用。此框架dll依赖于某些第三方dll。因此,当我从我的项目中使用这个dll时,每个依赖的dll都会复制到构建时的本地,因为CopyLocal属性为true 但现在有了新的要求,我们不能将CopyLocal属性设置为True。客户机不需要任何dll的本地副本,而是希望在某个位置使用与框架相关的dll。当我这样做时,依赖的DLL不
我们可以使用配置执行任何操作吗???您可以使用以下配置程序集探测路径: 指定公共语言运行库在加载程序集时要搜索的应用程序基子目录 MSDN中的示例:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="bin;bin2\subbin;bin3"/>
</assemblyBinding>
</runtime>
</configuration>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="neutral" />
<codeBase version="2.0.0.0"
href="http://www.litwareinc.com/myAssembly.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
也许可以将框架dll的路径添加到path环境变量中。我认为探测可以在同一个应用程序目录中工作。但我一定会试试这个。再次感谢这将不会工作,因为我认为我不能强名称第三方dll的。如果不给他们一个强有力的名字,我们可能就不能使用这个。如果我没弄错的话。
AppDomain.CurrentDomain.AssemblyResolve += (s, e) =>
Assembly.LoadFile(Path.Combine(Settings.Default.AssemblyPath, Path.ChangeExtension(e.Name.Substring(0, e.Name.IndexOf(',')), ".dll")));