簡體   English   中英

裝配未加載c#

[英]Assembly not loaded c#

我有一個項目Common ,其中包含一個log4net CustomAppender。 我在所有其他項目中引用該項目,並在app.config配置log4net appender。 除了在嘗試實例化Appender時失敗的一個項目,一切都順利進行。

輸出顯示以下錯誤:

System.TypeLoadException: Could not load type [Common.Appenders.MyCustomAppender].
Tried assembly [log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a]
and all loaded assemblies
at log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase)
at log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR Appender named [MyCustomAppender] not found.

所有項目的log4net配置都相同。 app.config包含:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="MyCustomAppender" type="Common.Appenders.MyCustomAppender">
      <file value="log.txt" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="MyCustomAppender" />
    </root>
  </log4net>
</configuration>

從代碼我調用log4net.Config.XmlConfigurator.Configure() 如果我在調用log4net之前使用Assembly.Load("Common")手動加載程序集為非工作項目配置一切正常。

知道為什么在通過反射實例化MyCustomAppender時未加載程序集? 我怎么解決這個問題?

嘗試將類型的名稱放在類型的名稱后面

<appender name="MyCustomAppender" type="Common.Appenders.MyCustomAppender,Common">

http://weblogs.asp.net/tgraham/archive/2007/05/02/loading-the-assembly-for-a-custom-log4net-appender.aspx

請記住,程序集的名稱不一定與它的默認名稱空間相同,也不一定與Visual Studio中的項目名稱相同。 這里的相關名稱是輸出名稱(生成的dll的文件名)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM