![](/img/trans.png)
[英]PostSharp: BindingException when using with Microsoft.Bcl in Windows Phone 7 project
[英]Using C# dll (built with Microsoft.bcl) in interop(C++ managed) project
我們在.net4.0中有一個C#DLL,但是使用Microsoft.bcl,Microsoft.bcl.async,Microsoft.bcl.build,Microsoft.net.http構建。 這些庫來自nuget。 我們有理由不轉移到.net4.5但想要使用async,等待來自這些bcl庫。 在C#項目中一切正常,但我們無法在我們的C ++互操作項目中添加此DLL,我們收到此錯誤:
當我們嘗試將此引用添加到項目時,我們收到此錯誤。
即使clr interop項目也在.net4.0和我們添加的DLL也在.net4.0中我們最終得到這個錯誤。 有辦法解決這個問題嗎?
Error in text format:
---------------------------
Microsoft Visual Studio
---------------------------
Could not add a reference to:
C:\xxx\xxx\xx\xxxHelper.dll
For one of the following reasons:
- Targets a higher version of the .NET Framework
- Not a .NET assembly
- Not a registered ActiveX control
---------------------------
OK
---------------------------
代碼重現此問題: https : //dl.dropboxusercontent.com/u/1967630/BCL_Problem/oAuth2_SDK_consumer_DLL/BCL_Problem_projects.zipx
我責備,肯定看起來像個臭蟲。 從屏幕截圖中的錯誤消息判斷,您使用的是VS2013。 非常無益的消息,它在VS2015中降低了但仍然失敗了。 奇怪的錯誤btw,似乎它對待你的C#項目用作框架程序集的Microsoft.Threading.Task程序集引用。 我之前沒有關於這個問題的SO問題,大多數程序員在沒有打機的情況下做到了這一點。
您應該考慮按照這樣做的方式來避免此錯誤。 如果使用“添加引用”對話框中的“瀏覽”按鈕,則只會出錯。 但是在使用項目引用時工作得很好,這是大多數程序員喜歡配置解決方案的方式。 因此,使用File> Add> Existing Project,選擇您的C#項目。 然后再次添加引用,但這次從Solution> Projects列表中選擇C#項目,而不是使用Browse按鈕。
如果由於某種原因這是不受歡迎的,那么你可以用另一種方式解決。 在文本編輯器中打開你的.vcxproj,記事本很好。 找到這個元素:
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
並將版本號修改為v4.5
。 現在像使用Browse按鈕一樣添加引用,這次沒有任何抱怨。 然后返回記事本並將版本號更改回v4.0
如果沒有其他幫助,你可以嘗試反編譯你的DLL。 .Net
組件易於拆卸。
再次編譯可能會解決問題(例如,你的nuget中的dll可能看起來是4.5,而不是4.0)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.