मैं the Autofac project पर हमारे सभी सामान्य तर्क को Portable Class Libraries में परिवर्तित करने और विशिष्ट कार्यक्षमता के लिए प्लेटफ़ॉर्म-विशिष्ट पुस्तकालयों को बदलने की कोशिश कर रहा हूं।मैं पोर्टेबल क्लास लाइब्रेरी पर निर्भर पुस्तकालय पर secannotate.exe को सफलतापूर्वक कैसे चला सकता हूं?
मेरी विकास मशीन विंडोज 8 एंटरप्राइज़ (64-बिट) है और मेरे पास सभी ट्रिमिंग के साथ वीएस 2012 अल्टीमेट स्थापित है। मेरे पास कोई पिछली .NET फ्रेमवर्क सामग्री स्थापित नहीं है, कोई अतिरिक्त उपकरण, या कोई अतिरिक्त पीसीएल-विशिष्ट टूलींग। यह सिर्फ आधार सामग्री के साथ एक साफ, नया वीएम है। सब कुछ इस विन्यास में ठीक से चलाता है और परीक्षण करता है।
जब मैं मैं एक त्रुटि दिखाने मैं mscorlib 2.0.5.0 ज़रूरत एक .NET 4.5 (पूर्ण प्रोफ़ाइल) पुस्तकालय है कि पोर्टेबल कक्षा पुस्तकालयों में से एक पर निर्भर करता है पर secannotate.exe को चलाने के लिए प्रयास करते हैं, ।
यहां एक उदाहरण त्रुटि है। पीसीएल Autofac.dll है; .NET 4.5 पूर्ण प्रोफ़ाइल लाइब्रेरी Autofac.Configuration.dll है।
Error running annotator: Could not find referenced assembly 'Assembly(Name=mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)'. Ensure that the reference paths and assemblies are setup correctly.
Microsoft (R) .NET Framework Security Transparency Annotator 4.0.30319.17929
Copyright (C) Microsoft Corporation. All rights reserved.
Loaded assembly 'Autofac.Configuration' from 'C:\dev\opensource\autofac\trunk\build_output\bin\net40\Autofac.Configuration.dll'.
Resolving assembly 'Assembly(Name=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'.
Loaded assembly 'mscorlib' from 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.
Loaded referenced assembly from 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.
Using core assembly: 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' from 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.
Assembly 'Autofac.Configuration' is using transparency model 'Level 2'.
Assembly 'mscorlib' is using transparency model 'Level 2'.
Loaded assembly 'Autofac' from 'C:\dev\opensource\autofac\trunk\build_output\bin\net40\Autofac.dll'.
Resolving assembly 'Assembly(Name=mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)'.
at Microsoft.Security.Tools.CciHostEnvironment.ResolvingAssemblyReference(IUnit referringUnit, AssemblyIdentity referencedAssembly)
at Microsoft.Security.Tools.CciHostEnvironment.LoadCoreAssembly()
at Microsoft.Security.Tools.CciHostEnvironment..ctor(ISecAnnotateHost host, String rootAssemblyPath)
at Microsoft.Security.Tools.SecAnnotate.LoadInputAssemblies()
at Microsoft.Security.Tools.SecAnnotate.AnnotateAssemblies()
at Microsoft.Security.Tools.SecAnnotate.Main(String[] args)
Autofac पोर्टेबल कक्षा लाइब्रेरी लक्ष्य: Windows स्टोर के लिए
- .NET 4.0
- सिल्वरलाइट 5
- नेट एप्लिकेशन
आप बनाने के द्वारा इस मुद्दे को दोहराने कर सकते हैं एक नया/खाली पीसीएल उन चीजों को लक्षित करता है और इसे बनाता है। आप इसे mscorlib 2.0.5.0 संदर्भ देखेंगे।
कुछ खोज मुझे विश्वास है कि इस वर्ष सिल्वरलाइट विधानसभा संस्करण के लिए एक संदर्भ है, लेकिन पीसीएल परियोजनाओं विशेष संस्करण संदर्भ की जरूरत नहीं है तो मैं केवल कल्पना कर सकते हैं इस में वी.एस. 2012 PCL उपकरण द्वारा डाल दिया हो रही है। अन्य लोगों ने वीएस 2012 से पहले एक .NET फ्रेमवर्क अपडेट स्थापित करके समान मुद्दों को ठीक किया है। मैं वास्तव में अपनी मशीन पर कहीं भी mscorlib 2.0.5.0 नहीं ढूंढ सकता।
Autofac.dll विधानसभा मैं बनाया पर dotPeek में देख रहे हैं, मैं इसे का संदर्भ देखें:
- mscorlib 2.0.5.0
- सिस्टम 2.0.5.0
- System.ComponentModel.Composition 2.0.5.0
- System.Core 2.0.5.0
और, फिर से, यह सिर्फ एक पीसीएल परियोजना, सीधे anyth संदर्भित नहीं है आईएनजी। सचमुच - .csproj फ़ाइल में एक संदर्भ संदर्भ नहीं है।
मैं इस सेकैनोटेट समस्या को कैसे हल करूं? क्या मुझे कुछ अतिरिक्त स्थापित करने की आवश्यकता है? क्या कोई पैरामीटर है जिसे मुझे सेकैनोटेट कमांड लाइन में जोड़ना चाहिए?
कृपया तेजी से =), हम परियोजना में पीसीएल के साथ लाइव नहीं जा सकते .. उत्पादक वातावरण पर इस 2.0.5.0 फ्रेमवर्क असेंबली को संदर्भित करने का कोई तरीका नहीं है ... – benwasd
मैंने जवाब अपडेट किया है। –
यह केवल विकास मशीन पर सत्यापन को हल करता है। नहीं? ग्राहकों पर केवल .NET 4.0 स्थापित किया गया था। मेरी .NET 4.0 लक्षित पीसीएल असेंबली अभी भी लोड नहीं की जा सकती .. – benwasd