Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 生成应用程序时发生程序集错误-遇到多个程序集版本_C#_Asp.net_.net_Visual Studio 2010_Building - Fatal编程技术网

C# 生成应用程序时发生程序集错误-遇到多个程序集版本

C# 生成应用程序时发生程序集错误-遇到多个程序集版本,c#,asp.net,.net,visual-studio-2010,building,C#,Asp.net,.net,Visual Studio 2010,Building,我今天像每天一样工作,当我试图构建我的项目时,我遇到了以下错误: 遇到多个版本的 具有GUID的程序集 “00020430-0000-0000-c000-0000000000 46”。 请尝试预先导入其中一个 装配 它说问题出在我的应用程序根目录中的TlbImp文件中。唯一的问题是,我没有这样的文件在我的项目,就我所记得的,从来没有 我正在使用Visual Studio 2010处理一个Web应用程序,不确定这些信息是否有用,但不管怎样。有一个解决方案 它说对COM组件的引用有问题 这是固定的,

我今天像每天一样工作,当我试图构建我的项目时,我遇到了以下错误:

遇到多个版本的 具有GUID的程序集 “00020430-0000-0000-c000-0000000000 46”。 请尝试预先导入其中一个 装配

它说问题出在我的应用程序根目录中的TlbImp文件中。唯一的问题是,我没有这样的文件在我的项目,就我所记得的,从来没有

我正在使用Visual Studio 2010处理一个Web应用程序,不确定这些信息是否有用,但不管怎样。

有一个解决方案

它说对COM组件的引用有问题

这是固定的,应该在Visual Studio的未来版本中提供。 注意:这并没有进入SP1


。Visual Studio使用它生成对您添加的COM库的引用的互操作程序集。

谢谢@DavRob,但这不是我想要的答案@dev_Gabriel我设法修复了它,以下是对我有效的步骤:

在VisualStudio中,右键单击项目 选择属性 选择“引用”选项卡。 检查是否有任何引用来自obj\Debug文件夹,并将其删除。
我也犯了同样的错误。我意识到我在两个不同的位置引用了相同的.dll两次

所以我所做的就是删除对.dll的所有引用,然后从单个位置再次添加它


这解决了错误。

只需添加到@Jeremythonpson的响应中:

我的问题是由于引用了COM对象,方法是为应用程序添加引用并浏览.exe,即C:\Program Files x86\ProFile\ProFile.exe。这添加了Interop.Profile.dll。显然,这将根据您尝试访问的SDK而有所不同,该SDK位于@Jeremythonpson所述的obj/Debug文件夹中

在我的具体案例中,我在两个项目中引用了Interop.Profile.dll,其中一个项目没有得到上面的错误,并成功构建了它。我转到成功构建项目的obj/Debug文件夹,并将Interop.Profile.dll复制到解决方案的dll文件夹这只是我创建的一个文件夹,用于将所有程序集保存在一个位置,但从技术上讲,您可以将COM DLL放在obj/Debug文件夹之外的任何位置,然后将我的两个项目的引用更改为指向位于我的DLL文件夹中的Interop.Profile.DLL,而不是obj/Debug文件夹中的Interop.Profile.DLL

一旦我做到了这一点,我的应用程序就成功地使用“重建”或“清理然后构建”来构建


显然,我的案例非常具体,但希望它能帮助其他人。

我今天在将VS 2008项目迁移到VS 2013时,遇到了另一个不同的情况。我花了一段时间才弄明白,所以它可能会帮助其他人。 我有一个包含10个左右项目的解决方案。其中一个项目是VB,它使用GUI引用旧的OCX。要创建所需的互操作引用,您需要将OCX拖到Winform上,该Winform会引入其他引用并创建所需的AX互操作引用。所有这些互操作DLL都是在…\obj\debug\路径中创建的。 我收到了几个多版本错误,但不是来自COM引用的项目,而是来自另一个引用VB项目的C项目。 为了解决这个问题,我将VB项目创建的互操作文件复制到C项目的…\obj\debug\文件夹中。 这有点痛苦,因为每次清理项目时,都需要重新复制文件,但至少现在可以了。请注意,您不能将AxInterop移动到其他位置,也不能手动引用它,因为它会拧紧物品。
谢谢@crunchy给我这个主意。

谢谢!显然,除了重新安装VisualStudio或类似的东西,没有办法修复它。再次感谢。对于正在阅读此问题的读者,Microsoft Connect错误链接已失效,@Jeremythonpson有另一种解决方案可以解决此问题。如今,此链接已失效。然而我最近又犯了一次错误,我的解决方案又一次奏效了。。。但这不是公认的答案。谢谢你让我知道!