2016-08-21 88 views
0

如何強制鏈接時不去除?我在框架Xamarin上爲Visual Studio 2015中的Android應用程序編寫代碼。面對這樣一個問題:應用程序工作正常調試模式,但是當你把版本模式的應用程序功能丟失,即幾個類被刪除鏈接時,當他們打電話,應用程序粉碎。試過Xamarin在課前提供的書面文件是屬性之一:如何強制鏈接時不刪除?

[Android.Runtime.Preserve] 
[Android.Runtime.Preserve (AllMembers = true)] 
[Android.Runtime.Preserve (Conditional = true)] 

沒有幫助。我也試過:

#pragma warning disable 0219, 0649 

它並沒有幫助。我試圖用linkskip,但它沒有幫助。

唯一的解決辦法是發現,它在連接屬性表示鏈接器行爲=沒有鏈接(在Visual Studio無)(在調試模式)。但是這是一個糟糕的解決方案,因爲適合調試,但不適合發佈。應用程序的規模增加了2.5倍以上!

回答

1

我有同樣的問題,解決了我的問題是將鏈接器行爲更改爲鏈接SDK程序集而且還將Xamarin工作室通道更改爲Alpha。

+0

感謝,但切換到Alpha通道不想要的。我會等待一個穩定的版本,也許這個錯誤修復 – Igor

0

一種選擇是在項目根目錄中創建一個linker.xml文件,如here所述。該文件應該包含您希望確保在鏈接期間不被刪除的所有類型。例如:

<?xml version="1.0" encoding="UTF-8"?> 
<linker> 
    <assembly fullname="Your.Assembly.Name"> 
     <type fullname="Fully.Qualified.Type.Name" /> 
    </assembly> 
</linker> 

一定要將文件的構建操作設置爲LinkDescription。

此外,我有一個問題,其中包括一種類型,但其基類在鏈接過程中被刪除。一定要包括所有類型的祖先。

希望幫助,

保羅的回答