Tag: clr

有没有办法控制Excel加载插件? (useLegacyV2RuntimeActivationPolicy问题)

我陷入了一个真正的混乱局面。 scheme:我有一个Excel自动化VBA加载项,调用.NET 4.0库(通过ExcelDna)。 这个4.0库调用2.0混合模式库中的一些方法。 因此必须将“BindAsLegacyV2Runtime”设置为4.0 CLR。 我把它设置在4.0库中,当excel实例化这个库时,CLR加载这个属性集合,一切正常。(请看这个链接 )。 我无法修改excel.exe.config,因为它在生产计算机中被拒绝。 我从一个batch file开始excel进程,并加载我的插件: Start Excel.exe my4.0addin.xla 问题:发现这不适用于less数用户机器,并调查了这个问题,发现Excel在加载作为参数传入的插件之前,先在机器中加载了预先安装的插件。 因此,在4.0加载项加载之前,excel因为其他加载项而加载了2.0 CLR。 因此,这个属性是不能设置的,逻辑就是抛弃。 我无法修改excel.exe.config(要添加属性到configuration)或注册我的插件,因为这两个都需要在用户计算机上的pipe理权限,并且在我的环境中是不可能的。 因此,有没有办法控制Excel的加载或任何方式使这项工作?

用C#创buildSQL CLR UDF

我已经被赋予能够将SQL查询结果集推送到Excel文件的任务。 目前,我有一个C#控制台应用程序(下图),它接受查询,并使用EPPlus库将结果转储到指定的xlsx文件中。 using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using OfficeOpenXml; using OfficeOpenXml.Style; namespace ExcelExport { class Program { static void Main(string[] args) { //Create a connection to the database SqlConnection conn = new SqlConnection("user id=username;" + "password=password;server=SQL-04;" + "Trusted_Connection=yes;" + "database=JOHN; " + "connection timeout=30"); conn.Open(); //Set […]

我可以在同一个Windows进程中使用CLR的.NET 4.0实例和CLR的.NET 3.5实例吗?

我有一个多个程序集C#Excel插件,它通过程序集边界传递embedded式互操作types。 当我在configuration为使用.NET 3.5的Excel进程中运行这个时,一切正常。 当我在configuration为使用.NET 4.0的Excel进程中运行这个时,只有在插件程序集自身加载中定义的应用程序逻辑的控制。 我想我明白为什么,因为在.NET 4.0中embedded式互操作types的处理发生了显着的变化,所以它们不能跨越assembly边界。 我感到困惑的是,我认为在.NET 4.0中,CLR的多个实例可以托pipe在一个Windows进程中。 如果我的插件以.NET 3.5为目标,为什么它不能运行在Excel拥有的.NET 3.5 CLR实例中? 为什么Excel试图在.NET 4.0中运行我的插件? 重写插件并不是一个真正的select,但它需要安装一个也使用.NET 4.0插件的客户端,所以用registry项或Excel.exe.config文件来播放是不行的…任何帮助将会非常感谢!