Vb.net 两台不同计算机上的不同互操作引用不';行不通
在我的计算机上添加对Microsoft.Office.Interop.Excel的引用时,Visual Studio会将以下内容添加到项目文件中:Vb.net 两台不同计算机上的不同互操作引用不';行不通,vb.net,excel,dll,interop,Vb.net,Excel,Dll,Interop,在我的计算机上添加对Microsoft.Office.Interop.Excel的引用时,Visual Studio会将以下内容添加到项目文件中: <COMReference Include="Excel"> <Guid>{00020813-0000-0000-C000-000000000046}</Guid> <VersionMajor>1</VersionMajor> <VersionMinor>5</
<COMReference Include="Excel">
<Guid>{00020813-0000-0000-C000-000000000046}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>5</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
<Reference Include="Interop.Excel, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>My Project\Interop.Excel.dll</HintPath>
</Reference>
{00020813-0000-0000-C000-0000000000 46}
1.
5.
0
主要的,重要的
假的
团队中还有一名开发人员出现错误,需要向项目中添加一个名为Interop.Excel.DLL的DLL文件,该文件将在项目文件中用以下代码替换上述代码:
<COMReference Include="Excel">
<Guid>{00020813-0000-0000-C000-000000000046}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>5</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
<Reference Include="Interop.Excel, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>My Project\Interop.Excel.dll</HintPath>
</Reference>
假的
我的项目\Interop.Excel.dll
这在我的电脑上可以用
请您解释一下这两种方法之间的区别,哪种是最好的,以及如何让第一种方法在其他计算机上工作?我使用Excel自动化的方式比我想承认的要多,而且我从未引用过Interop.Excel.dll。我总是引用前者。他为什么引用这个,他会犯什么错误
你们引用的是同一版本的excel(5.0对11.0)?你们有完全相同版本的office、service pakcs和所有软件吗?这可能是不同之处。我认为你的方法也没有问题 通常,当您向组件添加引用时,VS将自动为COM组件生成互操作程序集。但是,当您添加对其中一个Office组件(XP或任何更高版本)的引用时,将添加对来自Microsoft的预生成(和优化)主互操作程序集的引用,如第一个示例所示。线路
<WrapperTool>primary</WrapperTool>
您将在此MSDN中找到有关互操作程序集的更多详细信息
要使第一种方法工作,必须在计算机上安装Office主互操作程序集(PIA)。Microsoft提供了一个可再发行的版本:
注意:请确保引用目标Office的版本。但是,当针对多个版本的Office时,您可能会遇到一些问题。这种情况下的解决方案可能是延迟绑定(如果性能不是问题)。我发现使用它最干净的方法,这也允许多个版本的互操作,就是创建一个共享的bin\Office interop\11或12\Microsoft.Office.interop.Excel.dll\并从项目中引用它们,适用于不同版本另请注意,PIA包含额外的粘合代码,以避免在使用生成的互操作程序集时可能发生的内存/资源泄漏。如何确保使用PIA而不是生成的互操作。我相信我看到了@David Schmitt's中提到的内存/资源泄漏comment@user260197:PIA应正确安装在系统上。您可以从Microsoft获得一个安装程序来处理安装。特别重要的是,PIA应在GAC中注册。请参阅中的详细信息