C# 在某些项目中添加dll会出现以下错误:无法加载文件或程序集[…]
我正在尝试将DLL添加到我的解决方案中。我通过一个后期构建脚本来实现这一点,我可以看到DLL文件被完美地添加到了我的bin文件夹中 特别是,我通过后期构建脚本将C# 在某些项目中添加dll会出现以下错误:无法加载文件或程序集[…],c#,asp.net,visual-studio,debugging,dll,C#,Asp.net,Visual Studio,Debugging,Dll,我正在尝试将DLL添加到我的解决方案中。我通过一个后期构建脚本来实现这一点,我可以看到DLL文件被完美地添加到了我的bin文件夹中 特别是,我通过后期构建脚本将gsdll32.dll加载到bin文件夹 在我的ASP.NET MVC 4.5项目中,我得到一个包含以下信息的错误页面: Could not load file or assembly 'mypath\bin\gsdll32.dll' or one of its dependencies. The module was expected
gsdll32.dll
加载到bin文件夹
在我的ASP.NET MVC 4.5项目中,我得到一个包含以下信息的错误页面:
Could not load file or assembly 'mypath\bin\gsdll32.dll' or one of its dependencies. The module was expected to contain an assembly manifest.
然而,我已经能够在另外两个网站(一个是Web Forms 4.5,另一个是ASP.NET MVC 4.5)上使用它
因此,我的问题是:如何调试这样的错误
问题不在于问题(尽管标题相同),而是我的项目中存在问题,并导致DLL文件给我一个“无法加载”
错误
我的web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=c55a5c561934e089" requirePermission="false" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<connectionStrings>
my connection strings
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="RouteDebugger:Enabled" value="false" />
</appSettings>
<!--
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.
The following attributes can be set on the <httpRuntime> tag.
<system.Web>
<httpRuntime targetFramework="4.5.1" />
</system.Web>
-->
<system.web>
<httpRuntime targetFramework="4.5" />
<compilation debug="true" targetFramework="4.5.1" />
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers />
<rewrite>
<rules>
<rule name="Redirect domain.com to www" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{HTTP_HOST}" pattern="website.com" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="http://www.domain.com/{R:0}" />
</rule>
<!--To always remove trailing slash from the URL-->
<rule name="Remove trailing slash" stopProcessing="true">
<match url="(.*)/$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="ADONetAppender" />
</root>
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=publickey3134" />
<connectionString value="server=.\SQLEXPRESS;initial catalog=LetterAmazer;integrated security=true" />
<commandText value="INSERT INTO DbLog ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
</log4net>
</configuration>
我的连接字符串
最常见的原因——链接帖子中包含的“文件丢失”——根据OP不适用
第二个原因是进程位(对于ASP.Net站点可能是x64)和互操作/本机库(基于文件名可能是x86/32位)之间不匹配。解决方案-确保为每种口味使用匹配的程序集/本机映像。可能将托管代码复制到x64或x86平台上,以强制使用正确的本机二进制文件。谢谢您的回答。我有两个网站在同一个解决方案,一个工作,和另一个,它没有。您是说我的解决方案中的两个网站(即一个运行x64,另一个运行x86)很可能存在差异吗?:-)@LarshHoldGaard,因为您已经检查过所有文件都已就位,所以我接下来要检查的是位不匹配(假设您使用IIS托管站点)。原因是在解决方案之外控制的进程比特数(即,在IIS中,这是您设置应用程序池的方式)-因此,即使两个站点位于同一个解决方案中,一个可以作为x86运行,另一个可以作为x64运行,如果托管在两个不同配置的应用程序池中。IIS不托管文件。但是,现在我一次删除一个DLL文件。当我删除一些“WebActivator.dll”文件时,我发现它起了作用。。。你知道DLL文件是如何产生这种影响的吗?:)非常感谢你的帮助wya@LarsHoldgaard-不知道。。。也许您可以尝试指定完整的ghostscript dll路径。