C# Word 2007加载项不适用于Word 2010
我已经用C#为Word 2007编写了一个外接程序。为了分发外接程序,我使用了ClickOnce安装程序。但是,此加载项不适用于Word 2010。它在vsto.log文件中产生以下错误:C# Word 2007加载项不适用于Word 2010,c#,.net,vsto,add-in,office-2010,C#,.net,Vsto,Add In,Office 2010,我已经用C#为Word 2007编写了一个外接程序。为了分发外接程序,我使用了ClickOnce安装程序。但是,此加载项不适用于Word 2010。它在vsto.log文件中产生以下错误: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce1
System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' or one of its dependencies. The system cannot find the file specified.
File name: 'Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'
at Microsoft.VisualStudio.Tools.Office.Word.Internal.IWordHostItemProviderProxy..ctor(IHostItemProviderExtendedContract hostItemProvider)
at Microsoft.VisualStudio.Tools.Office.Word.Internal.IWordHostItemProviderProxy.GetProxy(IHostItemProviderExtendedContract contract)
at Microsoft.VisualStudio.Tools.Office.Word.Internal.LocalWordServiceProvider.GetService(Type serviceType)
at Microsoft.VisualStudio.Tools.Applications.Internal.LocalServiceProvider.System.IServiceProvider.GetService(Type serviceType)
at Microsoft.VisualStudio.Tools.Office.EntryPointComponentBase.Microsoft.VisualStudio.Tools.Applications.Runtime.IEntryPoint.Initialize(IServiceProvider hostContext)
at Microsoft.VisualStudio.Tools.Applications.AddInAdapter.ExecutePhase(ExecutionPhases executionPhases)
at Microsoft.VisualStudio.Tools.Office.Internal.OfficeAddInAdapterBase.InitializeEntryPointsHelper()
虽然我了解外接程序查找的Microsoft.Office.Interop.Word dll与系统上使用Word 2010的dll之间存在版本不匹配,但我不知道如何解决此问题。我在谷歌上搜索了一下,但没发现什么有趣的东西。请提供帮助。我认为您必须关闭“一次点击安装”项目中这些word程序集的特定版本检查。首先检查您的系统中是否使用以下代码安装了PIA(主互操作程序集)
bool IsPrimaryInteropAssembliesInstalled()
{
try
{
if (Assembly.Load("Policy.11.0.Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") != null)
{
return true;
}
}
catch (Exception)
{
}
return false;
}
void InstallPrimaryInteropAssemblies()
{
try
{
string str = "path\o2007pia.msi";
System.Diagnostics.Process process = new System.Diagnostics.Process
{
StartInfo = { FileName = str }
};
process.Start();
while (!process.HasExited)
{
System.Threading.Thread.Sleep(0x3e8);
}
}
catch (Exception exception)
{
}
}
然后从下载office PIA。并在代码下面运行
bool IsPrimaryInteropAssembliesInstalled()
{
try
{
if (Assembly.Load("Policy.11.0.Microsoft.Office.Interop.Word, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") != null)
{
return true;
}
}
catch (Exception)
{
}
return false;
}
void InstallPrimaryInteropAssemblies()
{
try
{
string str = "path\o2007pia.msi";
System.Diagnostics.Process process = new System.Diagnostics.Process
{
StartInfo = { FileName = str }
};
process.Start();
while (!process.HasExited)
{
System.Threading.Thread.Sleep(0x3e8);
}
}
catch (Exception exception)
{
}
}
我终于设法找出了这个问题。很抱歉没有早点发布。似乎我链接到了错误的库,而不是导致这个问题的PIA库。进行更改后,问题已得到修复。您使用的是什么版本的VSTO和.NET?