无法将ChilkatDotNet4.dll注册到GAC

for*_*reh 13 dll gac gacutil .net-4.0

我正在尝试向GAC添加.NET 4.0 .dll.我试图这样做是因为它是由第三方公司发布的32和64位.dll,我必须在两种格式的不同平台上使用不同的应用程序.

无论如何,我无法在Windows Server 2008环境中将此dll注册到GAC.

我尝试将本地计算机上"C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools"中的gacutil.exe(和支持文件)复制到"C:\ Windows"\Microsoft.NET\Framework\v4.0.30319"目标生产服务器上的文件夹,根据此处提供的建议.

然后我尝试将它们复制到"C:\ Windows\Microsoft.NET\Framework64\v4.0.30319".

从两个位置运行表明安装成功.事实上,注册似乎是成功的:

  • C:\ WINDOWS\Microsoft.NET \装配\ GAC_64\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll
  • C:\ WINDOWS\Microsoft.NET \装配\ GAC_32\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll

但是,使用以下消息运行引用dll(64位)版本的控制台应用程序错误:

System.IO.FileNotFoundException:无法加载文件或程序集"ChilkatDotNet4.dll"或其依赖项之一.指定的模块无法找到.文件名称:'ChilkatDotNet4.dll'

所以,我现在已经使用mkdir手动创建了以下GAC条目并从命令提示符复制(实际上可能有也可能没有.我不知道gacutil.exe有什么特别之处):

  • C:\ Windows\Microsoft.NET\assembly\GAC_MSIL\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll(使用64位版本的dll)
  • C:\ WINDOWS \装配\ GAC_64\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll
  • C:\ WINDOWS \装配\ GAC_32\ChilkatDotNet4\v4.0_9.0.8.0__eb5fc1fc52ef09bd\ChilkatDotNet4.dll

在每次"安装"dll之后,我测试并收到了同样的错误.欢迎任何想法!


编辑:上面的GAC问题实际上可能不是罪魁祸首.事实证明,即使我创建一个全新的Console App项目并直接添加.dll(以便它存在于bin中),我仍然无法在服务器上运行它.此外,我注意到控制台应用程序是针对.NET 4.0客户端配置文件而不是.NET Framework 4创建的.当我尝试针对客户端配置文件运行它时,似乎没有任何System.Web*库可用.但是,我尝试运行一个非常简单的测试应用程序,同时针对两者,并且在引用坏的.dll时都不会在服务器上运行.

是否有一种特殊的安装方式可以运行.NET 4.0控制台应用程序?

for*_*reh 35

对于其他可能在将来遇到麻烦的人.这不是我向GAC注册dll的方式或我从我的项目中引用它的方式的一般性问题.

ChilkatDotNet4.dll(以及我确定的其他版本)是用Visual C++构建的.因此,它所部署的服务器必须为适当的处理器体系结构安装Visual C++ Runtime.

对于2010(.NET 4.0):

如果您在64位平台上运行x86应用程序.确保使用"启用32位应用程序"= true标记应用程序池.

  • 非常感谢 - 今天救了我的培根:) (2认同)
  • 谢谢你的回答.我在像Frangiskos这样的Windows 2008 R2 x64上使用chillkatDotNet4.dll 64bit.我首先安装了Visual C++ Runtimes x64.我检查了网站但又看到了同样的错误.我用x86更改了Chilkat的x64 dll,还安装了x86版本的Visual C++ Runtimes.并将应用程序池"启用32位应用程序"属性设置为True.然后一切都很完美. (2认同)