2012-04-28 8 views
9

How can I build a targetting pack for Portable Class Libraries? और मैं जो पोर्टेबल कक्षा पुस्तकालय का उपयोग कुछ monodroid उदाहरण कार्यक्रमों के निर्माण के लिए प्रबंधित किया है http://jpobst.blogspot.com/2012/04/mono-for-android-portable-libraries-in.html में सलाह से करें।यह एक पोर्टेबल कक्षा लाइब्रेरी MonoDroid में System.Net संदर्भ का उपयोग करना संभव है?

हालांकि, अगर मेरे इनपुट पीसीएल में से कोई भी System.Net असेंबली का संदर्भ देता है, तो monodroid मेरे एपीके को पैकेज करने में विफल रहता है - क्योंकि यह System.Net.dll के लिए फ़ाइल नहीं मिला है।

के रूप में मैं इसे (http://docs.xamarin.com/android/about/assemblies से) को समझते हैं, MonoDroid System.dll के अंदर सभी System.Net कार्यक्षमता बंडल।

वहाँ किसी भी तरह से मैं MonoDroid इन PCLs जो संदर्भ System.Net उपयोग करने के लिए मिल सकता है?

  • क्या कोई तरीका है कि मैं इस System.net-> सिस्टम पुनर्निर्देशन को समझने के लिए monodroid packager प्राप्त कर सकता हूं?
  • या वहां कुछ पूर्व पैकेज कदम मुझे लगता है कि "को ठीक" होगा सिर्फ monodroid के लिए संदर्भित चला सकते है?
  • या किसी अन्य सुझाव?

    <!-- Find all the assemblies this app requires --> 
    <ResolveAssemblies 
        Assemblies="$(ProjectDir)$(OutDir)$(TargetFileName);@(ReferencePath)" 
        I18nAssemblies="$(MandroidI18n)" 
        LinkMode="$(AndroidLinkMode)" 
        ReferenceAssembliesDirectory="$(TargetFrameworkDirectory)"> 
         <Output TaskParameter="ResolvedAssemblies" ItemName="ResolvedAssemblies" /> 
        <Output TaskParameter="ResolvedUserAssemblies" ItemName="ResolvedUserAssemblies" /> 
        <Output TaskParameter="ResolvedFrameworkAssemblies" ItemName="ResolvedFrameworkAssemblies" /> 
        <Output TaskParameter="ResolvedSymbols" ItemName="ResolvedSymbols" /> 
        </ResolveAssemblies> 
    
    :

    "C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj" (SignAndroidPackage target) (1) -> 
    (_ResolveAssemblies target) -> 
        C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. Perhaps it doesn't exist in the Mono for Android profile? [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj] 
    C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : File name: 'System.Net.dll' [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj] 
    C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Monodroid.Tuner.MonoDroidResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj] 
    C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1 assemblies, AssemblyDefinition assembly) [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj] 
    C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1 assemblies, AssemblyDefinition assembly) [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj] 
    C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(List`1 assemblies, AssemblyDefinition assembly) [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj] 
    C:\Program Files (x86)\MSBuild\Novell\Novell.MonoDroid.Common.targets(441,2): error : at Xamarin.Android.Tasks.ResolveAssemblies.Execute() [C:\Projects\Misc\MVVMCROSS\Sample - Tutorial\Tutorial\Tutorial.UI.Droid\Tutorial.UI.Droid.csproj] 
    

    इस MSBuild कार्य के भीतर हो रहा है:

    पैकेजिंग प्रक्रिया वर्तमान के स्तर पर विफल हो रहा है:


तकनीकी जानकारी के साथ अद्यतन

से आयात किया गया:

<UsingTask TaskName="Xamarin.Android.Tasks.ResolveAssemblies" AssemblyFile="Novell.MonoDroid.Build.Tasks.dll" /> 

उत्तर

3

एक संभावित समाधान (माना जाता है कि मोनोड्रॉइड प्रकार अग्रेषण का समर्थन करता है) एक System.Net.dll असेंबली है जो प्रासंगिक प्रकारों को System.dll पर अग्रेषित करता है।

पूर्ण .NET Framework में, मुझे विश्वास है कि System.Net प्रकार System.dll में हैं, और यदि आप System.Net.dll को .NET 4.0.3 या 4.5 पर देखते हैं, तो आप उन प्रकारों के लिए TypeForwardedToAttributes देखेंगे , जो System.det पर पुनर्निर्देशित करने के लिए पोर्टेबल लाइब्रेरी में System.Net.dll के उन प्रकार संदर्भों को अनुमति देता है। Understanding Portable Libraries पर जेरेमी लिकनेस की ब्लॉग पोस्ट श्रृंखला इस बारे में कुछ विस्तार से बताती है कि यह सब कैसे काम करता है।

पोर्टेबल लाइब्रेरी में संदर्भ System.Net.dll का पूर्ण मजबूत नाम देखें। इसलिए आप उन प्रकार के साथ सही तरीके से हस्ताक्षरित असेंबली नहीं बना सकते हैं, क्योंकि आपके पास निजी कुंजी नहीं है। हालांकि, मोनोडायड मजबूत नाम या हस्ताक्षर सत्यापन को अलग-अलग संभाल सकता है। तो हो सकता है कि आप एक सिस्टम.Net.dll को आगे के प्रकार के साथ उत्पन्न करने में सक्षम हो सकें जो मोनोड्रॉइड स्वीकार करेगा, और इसे आपके मोनोडायड एप्लिकेशन के साथ पैकेज करेगा।

+0

मैं एक घंटे के लिए हैकिंग कर रहा हूं (कुछ एमएसबिल्ड ज़ैमरिन बिल्ड टास्क हैक्स में भी कोशिश की और असफल रहा) और ... मुझे कुछ सफलता मिली है! धन्यवाद। ट्विटर के माध्यम से और अधिक रिपोर्ट करेंगे – Stuart

+1

http://slodge.blogspot.co.uk/2012/04/using-portable-library-tools-for.html पर कुछ नोट्स ब्लॉग किए हैं - जब मैं मोनोटच भी काम करता हूं तो जिथब को धक्का दूंगा ... (वर्तमान में monodevelop के साथ समस्याएं!) – Stuart

संबंधित मुद्दे