2015-12-19 6 views
10

मैं अपना पहला एएसपी.Net वेब एप्लिकेशन विकसित करने की कोशिश कर रहा हूं और मेरे समाधान में मेरे पास दो परियोजनाएं हैं। एक Web Application और Class Library (Package)। जब मैं इस एप्लिकेशन के एएसपी.Net 4.5 संस्करण का निर्माण करता हूं तो मैंने अपनी Entity Framework 6 इकाइयों को कक्षा पुस्तकालय में रखा है, इसलिए मैं इसे ASP.Net 5 संस्करण में कर रहा हूं।एटीपी.Net 5 कक्षा पुस्तकालय पैकेज में EntityFramework कमांड?

The dependency EntityFramework.Command 7.0.0-rc1-final in Project DBEntities does not support framework .NetPlatform, Version = 5.4

this SO question से मेरे समझ के साथ कि dotnet5.4 नई नेट 5 जो EF7 द्वारा समर्थित होना माना जाता है है: समस्या है जब मैं कक्षा पुस्तकालय के लिए EntityFramework.Commands स्थापित मैं त्रुटि मिलती है।

{ 
    "version": "1.0.0-*", 
    "description": "FFInfo.DAL Class Library", 
    "authors": [ "Mathew" ], 
    "tags": [ "" ], 
    "projectUrl": "", 
    "licenseUrl": "", 
    "frameworks": { 
     "dotnet5.4": { 
      "dependencies": { 
       "Microsoft.CSharp": "4.0.1-beta-23516", 
       "System.Collections": "4.0.11-beta-23516", 
       "System.Linq": "4.0.1-beta-23516", 
       "System.Runtime": "4.0.21-beta-23516", 
       "System.Threading": "4.0.11-beta-23516" 
      } 
     } 
    }, 
    "dependencies": { 
     "EntityFramework.Commands": "7.0.0-rc1-final", 
     "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final" 
    } 
} 

मैं गलत पैकेज स्थापित किया था, EF7 इतना है कि मैं कक्षा गलत इमारत का निर्माण कर रहा हूँ, या मैं अपने json फ़ाइल में कुछ याद आ रही है बदला है:

यहाँ मेरी project.json फ़ाइल है?

संपादित करें: न्यू project.json फ़ाइल बंद आधारित सुझाव

{ 
    "version": "1.0.0-*", 
    "description": "FFInfo.DAL Class Library", 
    "authors": [ "Mathew" ], 
    "tags": [ "" ], 
    "projectUrl": "", 
    "licenseUrl": "", 
    "frameworks": { 
     "dotnet5.4": { 
      "dependencies": { 
       "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*", 
       "Microsoft.Dnx.Runtime": "1.0.0-*", 
       "Microsoft.Extensions.CommandLineUtils.Sources": { 
        "version": "1.0.0-*", 
        "type": "build" 
       }, 
       "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*", 
       "System.Console": "4.0.0-*", 
       "System.IO.FileSystem": "4.0.1-*" 
      } 
     }, 
     "netcore50": { 
      "bin": { 
       "assembly": "lib\\netcore50\\_._" 
      } 
     }, 
     "dependencies": { 
      "EntityFramework.Commands": "7.0.0-rc1-final", 
      "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final" 
     } 
    } 
} 
+0

ढांचा 'dotnet5.4'' dnxcore50' का पर्याय है और 'dnx451' नहीं है (देखें [आधिकारिक घोषणा] (https://github.com/aspnet/Announcements/issues/98))। मुझे व्यक्तिगत रूप से नामों के परिवर्तन खराब होते हैं। ** मैं आपको 'dotnet5.4' का नाम बदलने के लिए सबसे पहले' dnxcore50' का नाम दूंगा। ** शायद आपको 'फ्रेमवर्क "के बजाय' net451' या 'dnx451' का उपयोग करना चाहिए।" Dotnet5.4 "।" निर्भरता " 'यदि आपकी कक्षा लाइब्रेरी एएसपी.Net 4.5 के लिए है तो ज्यादातर? किसी भी तरह से मैं आपको "dnx451" जोड़ने की सलाह दूंगा: {} '(या' "net451": {} ') 'फ्रेमवर्क' पर वापस। यदि आप समस्या को पुन: उत्पन्न करने में सक्षम होंगे तो मैं और अधिक मदद करने की कोशिश कर सकता हूं। – Oleg

+0

@ ओलेग मैं इसे लक्षित नहीं करना चाहता हूं। नेट 4.5' मैं इसे 'नेट 5.0 कोर' को लक्षित करना चाहता हूं। यह 'क्लास लाइब्रेरी' मेरे वेब ऐप के 'एएसपी.Net 5' संस्करण' के लिए है। – Matthew

+2

मुझे लगता है कि आपकी समस्या का समाधान ** ** "dotnet5.4" '' 'dnxcore50" '** नामकरण द्वारा किया जा सकता है। अगर यह काम करेगा तो मैं अपने उत्तर को अधिक विस्तृत स्पष्टीकरण के साथ पोस्ट करूंगा। मुझे लगता है कि आप अतिरिक्त रूप से '' ढांचे 'में शामिल' 'निर्भरता '' को हटा सकते हैं।" Dotnet5.4 "' ('" ढांचे "।" Dnxcore50 "') और शायद सामान्य 'निर्भरता "का उपयोग करें, लेकिन इसमें शामिल हैं केवल वास्तव में आवश्यक निर्भरता। '" फ्रेमवर्क "का अनुकूलन आपकी मुख्य समस्या से स्वतंत्र है। – Oleg

उत्तर

15

मुझे लगता है कि आपकी समस्या के कारण शुद्ध तकनीकी प्रकृति की है। The announcement net451 और dotnet5.4 को dnxcore50 को dnx451 के नाम बदलने की घोषणा की है, लेकिन एक ही वर्ग पुस्तकालयों (जो आप उदाहरण के लिए NuGet पर publich दूसरे के साथ साझा करने के लिए) के लिए इस तरह का नाम बदलने उपयोग करने के लिए सलाह देते हैं। अगर मैं आपको सही ढंग से समझता हूं, तो आप एप्लिकेशन विकसित करते हैं जो कक्षा पुस्तकालयों का उपयोग करता है और इस प्रकार आपको के बजाय dnxcore50 का उपयोग करना चाहिए। इस प्रकार आपको समस्या को ठीक करने के लिए स्ट्रिंग "dnxcore50" in the file project.json` स्ट्रिंग को "dotnet5.4" स्ट्रिंग का नाम बदलने की आवश्यकता है।

ऊपर सिफारिश मैं आपकी समस्या की मेरी समझ जोड़ना चाहते हैं, से स्वतंत्र क्यों आप EntityFramework.Command 7.0.0-RC1 फाइनल के बारे में त्रुटि मिलती है।

मैं माइक्रोसॉफ्ट की योजना बनाने वाले भविष्य में बदलावों के दिशा में कदम के रूप में ढांचे के नामकरण को समझता हूं। दूसरी तरफ ढांचे के सभी नामों को अलग-अलग नामों के रूप में व्याख्या किया जाएगा। मेरा सुझाव है कि आप https://www.nuget.org/packages/EntityFramework.MicrosoftSqlServer/7.0.0-rc1-final से संबंधित जानकारी से पृष्ठ https://www.nuget.org/packages/EntityFramework.Commands/7.0.0-rc1-final पर प्रदर्शित निर्भरताओं के बारे में जानकारी की तुलना करें। EntityFramework.MicrosoftSqlServer की निर्भरता (जो dotnet5.4 के उपयोग के साथ कोई समस्या नहीं) चित्र

enter image description here

मैं भाग dotnet5.4 के लिए जिम्मेदार पढ़ा गया चिह्नित पर तरह दिखता है। दूसरी ओर EntityFramework.Commands की निर्भरता नीचे चित्र पर दिखाई देता है:

enter image description here

जहां कोई ".NETPlatform 5.4" खंड जो नया नाम dotnet5.4 मेल खाती है देखते हैं।

मुझे लगता है कि यह EntityFramework.Commands की project.json की the part में एक बग है:

"netcore50": { 
    "bin": { 
    "assembly": "lib\\netcore50\\_._" 
    } 
} 

मुझे लगता है एक नया ढांचा नाम dotnet5.4 सही ढंग से समर्थन करने के लिए लाइनों में dotnet5.4 को netcore50 बदलना होगा। एक dnxcore50 से नकल करने के लिए "netcore50" की सामग्री की जगह chould (the lines देखें):

"dotnet5.4": { 
    "dependencies": { 
    "Microsoft.AspNet.Hosting.Abstractions": "1.0.0-*", 
    "Microsoft.Dnx.Runtime": "1.0.0-*", 
    "Microsoft.Extensions.CommandLineUtils.Sources": { 
     "version": "1.0.0-*", 
     "type": "build" 
    }, 
    "Microsoft.Extensions.PlatformAbstractions": "1.0.0-*", 
    "System.Console": "4.0.0-*", 
    "System.IO.FileSystem": "4.0.1-*" 
    } 
} 

शायद एक घटना DLLs ऊपर संदर्भित के कुछ संस्करण संख्या वृद्धि करनी चाहिए, लेकिन आप अभी भी "dotnet5.4" तहत EntityFramework.Commands उपयोग करने के लिए सक्षम नहीं होगा जब तक नया तय संस्करण प्रकाशित नहीं किया जाएगा।

अद्यतन: मैंने the issue को एंटीटीफ्रेमवर्क डेवलपर टीम में देखा। मैं इसे प्राप्त करने के बाद इस मुद्दे पर माइक्रोसॉफ्ट से प्रतिक्रिया शामिल करूंगा।

+0

लेकिन 'EntityFramework.Commands' क्लास लाइब्रेरी नहीं है, इसकी एक [एप्लिकेशन] (https://github.com/aspnet/EntityFramework/blob/dev/src/EntityFramework.Commands/Commands/Program.cs) है ... –

+0

@StaffordWilliams: मुझे लगता है कि वर्तमान में शब्दावली में कुछ अंतर हैं। मेरे लिए डीएलएल आवेदन नहीं है। "EntityFramework.Commands" के वर्गीकरण से स्वतंत्र इसे [project.json] में '" dotworks "के रूप में' "फ्रेमवर्क" के रूप में संकलित करना होगा (https://github.com/aspnet/EntityFramework/blob/ dev/src/EntityFramework.Commands/project.json # L19) अगर कोई इसे अनुप्रयोगों में उपयोग करने की अनुमति देना चाहता है, जो इसका उपयोग करता है और 'dotnet5.4' के लिए भी संकलित किया जाता है। आप कुछ परियोजना में समस्या को पुन: पेश करने का प्रयास कर सकते हैं जो EntityFramework का उपयोग करते हैं। आपको 'dnxcore50' को' dotnet5.4' नाम से त्रुटि मिल जाएगी। – Oleg

+0

मैंने आपके द्वारा लिंक किए गए झूठों की प्रतिलिपि बनाने की कोशिश की लेकिन अब मुझे 'निर्भरता माइक्रोसॉफ्ट। एक्सटेंशन। कमांडलाइन उपयोग। स्रोत> = 1.0.0- * हल नहीं किया जा सका। और 'Microsoft.Dnx.Runtime' के लिए एक ही त्रुटि है, इसलिए मुझे नहीं लगता कि बस प्रतिस्थापन – Matthew

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