2016-01-04 38 views
0

我在ASP.NETv5試圖iTextSharp的,我有一個覆蓋OnEndPage與以下行PdfPageEventHelper矩陣組件參考iTextSharp的與ASP.NET5

_cb.AddTemplate(_template, pageSize.GetLeft(295), pageSize.GetBottom(36)); 

這將引發一個錯誤:類型'矩陣'在未引用的程序集中定義。您必須添加對程序集「System.Drawing,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a」的引用。

我該如何解決這個問題,我是否需要添加一些項目。

編輯 繼CodingGorilla的回答,我已經改變了我的web.config:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <assemblyBinding> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Drawing" 
      publicKeyToken="b03f5f7f11d50a3a" 
      culture="en-us" /> 
     <bindingRedirect oldVersion="2.0.0.0" newVersion="4.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <system.webServer> 
    etc... 

然而,構建仍然失敗,並提到了2.0.0.0版本。

+0

你想在CoreCLR上運行這個嗎? – CodingGorilla

+0

@CodingGorilla不,它只運行dnx451 – Sean

回答

1

我有同樣的問題,System.Drawing不是由該項目引用,添加引用4.0.0.0,它的工作

+0

啊。所以你必須做類似''框架「的事情:{」dnx451「:{」frameworkAssemblies「:{」System。繪圖「:」4.0.0.0「}}}'。謝謝! – Sean

1

所以我認爲問題是iTextSharp是用/ for .NET 2.0編寫的,因此它正在尋找2.0版本的System.Drawing。我從來沒有試過用System.Drawing這樣做,但我認爲它會工作相同;你想要做的是將一個<bindingRedirect>元素添加到web.config中。看看這個MSDN文章:https://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx,談論那個。

我懷疑iTextSharp已經過ASP.NET 5的測試,所以最終你可能根本無法使用它,因爲它依賴於舊版本的框架。

+0

ASP.NETv5目前(2016年1月6日)還沒有發佈,它仍然在RC1。 –

+0

不知道我是否做得對,但我仍然得到同樣的錯誤。查看更新的問題。如果intellisense/VS知道有重定向 - 因爲它仍然強調它是一個錯誤,並且構建仍然失敗。 – Sean

+0

嘗試:'oldVersion =「0.0.0.0-2.0.0.0」'看看是否有幫助。如果沒有,那麼你可能想在ASP.NET github倉庫中引發一個問題。 – CodingGorilla

0

其實你不應該需要System.Drawing中的。我在我的一個課上遇到了同樣的問題。如果你想申請什麼解決了這個問題對我來說,你的代碼行看起來像:

_cb.AddTemplate(_template, 1f, 0f, 0f, 1f, pageSize.GetLeft(295), pageSize.GetBottom(36)); 

這應該不會改變你的代碼的預期的行爲,因爲你的行會有效反正叫這條線。

我必須承認,我仍然不完全瞭解System.Drawing如何發揮作用。如果方法調用獲取兩個浮點數,則該方法調用不應解析爲System.Drawing.Drawing2D.Matrix版本。包含Matrix的方法簽名甚至標記爲[Obsolete]。