2010-06-30 13 views
12

मैं क्लाइंट साइड रिपोर्ट (rdlc) बनाने के लिए वीएस 2010 से रिपोर्टव्यूयर नियंत्रण का उपयोग कर रहा हूं। सब कुछ मेरी विकास मशीन पर ठीक काम कर रहा है, और जब मैं मैन्युअल रूप से संकलित करता हूं (वीएस -2010 के माध्यम से) और मैन्युअल रूप से एक परीक्षण मशीन पर तैनात करता है जिसमें विकास उपकरण स्थापित नहीं होते हैं।एमएसबिल्ड आरडीएलसी फ़ाइल संकलित करने के लिए असेंबली के गलत संस्करण का उपयोग

आदेश (VS2010 या ReportViewer.exe की स्थापना के बिना) काम करने के लिए परीक्षण मशीन पाने के लिए, मैं Microsoft.ReportViewer.Winforms, Microsoft.ReportViewer.Common और Microsoft.ReportViewer.ProcessingModel और करने के लिए अपने प्रोजेक्ट में संदर्भ जोड़ने के लिए किया था उन्हें सभी "स्थानीय कॉपी करें"।

मेरे पास बिल्ड एक्शन => एम्बेडेड संसाधनों के लिए कॉन्फ़िगर की गई rdlc फ़ाइलें हैं। प्रोजेक्ट में नया rdlc जोड़ते समय यह डिफ़ॉल्ट सेटिंग है। मैं इसे अन्यथा कॉन्फ़िगर करने के लिए खुला हूं अन्यथा यदि यह इस समस्या को हल करेगा (कोई विचार नहीं है तो यह संबंधित है)।

समस्या: rdlc फ़ाइलों को जोड़ने के बाद, समाधान अब बिल्ड सर्वर पर नहीं बनाता है। मैंने बिल्ड सर्वर पर ReportViewer.exe स्थापित किया है, और सत्यापित किया है कि आवश्यक असेंबली जीएसी में मौजूद है। .NET 4 ढांचे को बिल्ड सर्वर पर स्थापित नहीं किया गया है - मुझे नहीं लगता कि यह आवश्यक है क्योंकि समाधान 3.5 रनटाइम को लक्षित करता है।

मेरा मानना ​​है कि निर्माण लॉग से निम्न समस्या की जड़ है:

Target "RunRdlCompiler": Building target "RunRdlCompiler" completely. Output file "obj\Release\RdlCompile.compiled" does not exist. Using "RdlCompile" task from assembly "Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". Task "RdlCompile": Report\RDLC\GreenReport.rdlc (0,0): error rsInvalidReportDefinition: The report definition is not valid. Details: The report definition has an invalid target namespace ' http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition ' which cannot be upgraded.

मैं क्या बता सकते हैं, Microsoft.ReportViewer.Common संस्करण 10.0.0.0 क्या "संकलन" करने के लिए इस्तेमाल किया जाना चाहिए है rdlc, लेकिन MSBuild 9.0.0.0 का उपयोग कर प्रतीत होता है। मेरा मानना ​​है कि अगर मैं इसे सही संस्करण (जो जीएसी में स्थापित है) का उपयोग करने के लिए मजबूर कर सकता है, तो समाधान संकलित होगा।

उत्तर

7

ऐसा इसलिए है क्योंकि आपकी Microsoft.Common.Targets फ़ाइल असेंबली के 9.0 संस्करण को इंगित कर रही है।

यदि आप [sysdir] \ Microsoft.NET \ Framework \ v3.5 में देखते हैं तो आपको Microsoft.Common.targets मिलेगा, जो एमएसबिल्ड द्वारा किए गए बहुत सारे काम चला रहा है। सामान्य लक्ष्य फ़ाइल का यह संस्करण [Program Files]\MSBuild\Microsoft\VisualStudio\v9.0\ReportingServices\Microsoft.ReportingServices.targets पर इंगित करता है जो MSBuild को 9.0 संस्करण के साथ चलाने के लिए मजबूर करता है।

जब आपने .NET 4.0 स्थापित किया था, तो आपको v4.0.x निर्देशिका में एक नई आम लक्ष्य फ़ाइल मिली, यह नया अब [Program Files]\MSBuild\Microsoft\VisualStudio\v10.0\ReportingServices\Microsoft.ReportingServices.targets पर इंगित करता है जो ReportViewer असेंबली के 10.0 संस्करण को इंगित करता है।

10.0 रिपोर्ट व्यूअर .NET 3.5 के खिलाफ संकलित है और 3.5 और 4.0 दोनों में काम करने का इरादा है। आप शायद .NET 4.0 ढांचे से छुटकारा पा सकते हैं, और अपनी 3.5 सामान्य लक्ष्य फ़ाइल को नई रिपोर्टिंग सर्विसेज लक्ष्य फ़ाइल को इंगित करने के लिए बदल सकते हैं, और इसे काम करना चाहिए। सिद्धांत रूप में वैसे भी, मैंने वास्तव में कभी कोशिश नहीं की है। आप केवल 4.0 के साथ चिपकने से सबसे अच्छे हो सकते हैं, क्योंकि जब हमने नए दर्शक के लिए एमएसबिल्ड समर्थन तैयार किया था तो यही वही था।

+0

मैं अब इसके साथ गड़बड़ नहीं कर रहा हूं कि यह काम कर रहा है, लेकिन स्पष्टीकरण निश्चित रूप से प्रबुद्ध है - मैं इस जानकारी के लिए उच्च और निम्न गुगल रहा था और कुछ भी नहीं मिला। –

2

बाहर निकलता है मुझे .NET 4.0 फ्रेमवर्क की आवश्यकता है, और विशेष रूप से MSBuild के 4.x संस्करण, जो Microsoft.ReportViewer.Common लाइब्रेरी के नए संस्करण का उपयोग करता है।

तो यदि आप 3.5 फ्रेमवर्क को लक्षित कर रहे हैं, तो भी यदि आप वीएस -2010 के साथ rdlc बनाते हैं तो यह 4.0 टूल का उपयोग करके "संकलित" होने की उम्मीद करेगा।

4

मेरे पास एक बहुत ही समान समस्या थी। अचानक मैं अचानक एक वीएस -2010 प्रोजेक्ट नहीं बना सकता जिसमें एक .rdlc फ़ाइल थी। मैं किसी भी रिपोर्ट को परिवर्तित नहीं कर रहा था या रिपोर्ट सर्वर का उपयोग नहीं कर रहा था, सब कुछ स्थानीय था। मैंने एक ब्रांड नई परियोजना बनाने और एक खाली नई rdlc रिपोर्ट जोड़ने और निर्माण हिट करने की कोशिश की और यह काम नहीं करेगा।सिर्फ एक दिन यह संकलन बंद कर दिया और मुझे निम्न त्रुटि दिया:

The report definition is not valid. Details: The report definition has an invalid target namespace 'http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition' which cannot be upgraded.

बाहर कर देता है मुद्दा मेरी "C था: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ ReportingServices \ Microsoft.ReportingServices.targets "फ़ाइल किसी भी तरह से बदल गई थी। मेरी फ़ाइल के शीर्ष था:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <UsingTask TaskName="Microsoft.Reporting.RdlCompile" AssemblyName="Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

और यह किया जाना चाहिए था:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <UsingTask TaskName="Microsoft.Reporting.RdlCompile" AssemblyName="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

मैं बदल कि एक फाइल और सब कुछ में लाइन "टास्क का उपयोग करना" फिर से बनाता है। वास्तव में निराशाजनक और यह मेरे जीवन के दो दिन खा लिया। इस टिप्पणी को पोस्ट करने की उम्मीद किसी अन्य स्थिति में किसी और की मदद कर सकती है।

जिम Lafler

1

चिपकाया जा रहा है फ़ाइल पथ ... के माध्यम से जा रहा प्रतीत नहीं होता है कि कैसे इस बारे में:

था:

TaskName="Microsoft.Reporting.RdlCompile" AssemblyName="Microsoft.ReportViewer.Common, Version=8.0.0.0... 

और अब है:

TaskName="Microsoft.Reporting.RdlCompile" AssemblyName="Microsoft.ReportViewer.WebForms, Version=10.0.0.0... 

जेम्स

6

बस माइक्रोसॉफ्ट रिपोर्ट व्यूअर 2010 एसपी 1 स्थापित करें।

+0

बिल्कुल सही जवाब। काफी सरल है, और इसे डिफ़ॉल्ट फ़ाइलों के साथ गड़बड़ की आवश्यकता नहीं है जो बाद में <...> में आपको काटने के लिए वापस आ सकता है। – Jesse

+0

यह मेरे लिए काम करता है, मुझे किसी भी। लक्ष्य फ़ाइल को संशोधित करने की आवश्यकता नहीं थी, और जीएसी में डीएलएल का नवीनतम संस्करण संदर्भ आइटम प्रॉपर्टी विंडो में मेरे लिए दिखाया गया है। –

3

मैंने सभी को पुनः स्थापित करने का प्रयास किया है और यह काम नहीं किया है। फिर, मैंने जिम की पोस्ट के अनुसार माइक्रोसॉफ्ट को रिपोर्ट करने का प्रयास किया। रिपोर्टिंग सर्विसेज। लक्ष्य लेकिन मेरे लिए भी काम नहीं किया।

अंत में, मैंने अभी माइक्रोसॉफ्ट की प्रतिलिपि बनाई है। रिपोर्टिंग सर्विसेज। लक्ष्य अन्य मशीन से (जहां यह त्रुटि के बिना चल रहा था)। और आश्चर्य की बात है, यह काम कर रहा है।

अतिरिक्त अंतर है, जबकि की तुलना मैंने देखा, संस्करण के साथ PublicKeyToken बदलने के लिए।

यह मेरे लिए मामला हो सकता है लेकिन जिम की पोस्ट बहुत उपयोगी थी।

SFUH

0

NetFx40_LegacySecurityPolicy मेरी devenv.exe.config में सक्षम था, और जब मैं इस लाइन पर टिप्पणी की, परियोजना को सफलतापूर्वक निर्माण किया।

हमने हमारी टीम पर लीगेसी सुरक्षा नीति को सक्षम किया है ताकि हमारी टीम को विजुअल स्टूडियो 2010 के भीतर से DevExpress 7.2 नियंत्रणों के साथ काम करने में सक्षम बनाया जा सके, लेकिन इस मामले में, यह दिखाता है कि हमने जो दृष्टिकोण लिया वह हमेशा सर्वोत्तम नहीं होता है।

0

इसी तरह के मुद्दे के कारण मैंने विकास के 2 पूर्ण दिन खो दिए। मेरी परियोजना के निर्माण पर यह सफल होगा, लेकिन पुनर्निर्माण पर यह कोई त्रुटि के साथ विफल रहा। आउटपुट विंडो में वर्बोज़ बिल्ड लॉग की जांच करने पर यह मुझे rdlcompile फ़ंक्शन के साथ किसी समस्या की ओर निर्देशित करता है (इसलिए रिपोर्टिंग स्थानीय रिपोर्ट रिपोर्टिंग स्थानीय रिपोर्ट)। हर चीज की कोशिश करने के बाद मैं अंततः इस मुद्दे को हल करने का प्रबंधन करता हूं, लेकिन मेरे वायरस स्कैनर को अक्षम करता हूं। एंटीवायरस किसी भी तरह से मेरे पुनर्निर्माण के साथ हस्तक्षेप कर रहा था और पुनर्निर्माण विफल हो गया था।

वायरस स्कैन अक्षम करने के बाद, काम करता है के पुनर्निर्माण के लिए 100%

2

मैं एक ही समस्या है: हम ReportViewer 2012 (विधानसभाओं के संस्करण 11 के साथ शुरू होता) का उपयोग कर। स्थानीय मशीनों पर और निर्माण मशीन पर दोनों ReportViewer 2012 पैकेज स्थापित कर रहे हैं और वी.एस. में VisualStudio 2013 स्थानीय मशीनों संकलन पर सफल होता है, लेकिन निर्माण मशीन पर पंक्तिबद्ध निर्माण के दौरान MSBuild ऐसी त्रुटि फेंकता है:

The report definition is not valid. Details: The report definition has an invalid target 
namespace 'http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition' 
which cannot be upgraded. 

मैं माइक्रोसॉफ्ट को संशोधित करने की कोशिश की। .NET 3.5 फ़ोल्डर से सामान्य.targets, इस पोस्ट में वर्णित है, लेकिन कोई प्रभाव नहीं है। तब मैं .NET 4.0 फ़ोल्डर से Microsoft.Common.targets खोला, और पाया ऐसी है कि इनमें तार:

<!-- VS10 without SP1 and without VS11 will not have VisualStudioVersion set, so do 
that here --> 
<PropertyGroup> 
<VisualStudioVersion Condition="'$(VisualStudioVersion)' 
==''">10.0</VisualStudioVersion> 
</PropertyGroup> 

तब मुझे एहसास हुआ कि समस्या चर $ (VisualStudioVersion) की गलत मान में हो सकता है, तो मैं परिभाषा का निर्माण करने के लिए जोड़ा खंड "प्रोसेस" में यह एमएसबील्ड पैरामीटर:

/p:VisualStudioVersion=12.0 

और यह काम किया! निर्माण सफलतापूर्वक पूरा हुआ। आशा है कि यह किसी की मदद करेगा।

+0

धन्यवाद। इस समस्या को हल करने के प्रयास के घंटों के बाद यह एकमात्र चीज है जो इसे मेरे लिए तय करती है। मैंने प्रोजेक्ट फ़ाइल संपादित की और ' 10.0 'से' 10.0 ' – mejobloggs

+0

यह मेरे लिए भी काम करता है ! धन्यवाद। – user3110409

0

मैं अपने दृश्य स्टूडियो पर एक ही समस्या है 2013 संस्करण = 10.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a

जब मैं अपने ReportingServices जाँच की लक्षित करता है अपने प्रोजेक्ट पर रिपोर्टिंग सेवा के dll संस्करण है

C: \ \ MSBuild \ Microsoft Program Files \ VisualStudio \ v12.0 \ ReportingServices \ Microsoft.ReportingServices.targets

मैंने पाया काम संस्करण है 11.0.0.0

<UsingTask TaskName="Microsoft.Reporting.RdlCompile" AssemblyName="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/> 

जब मैंने अपने प्रोजेक्ट पर डीएलएल संस्करण के अनुरूप कार्य संस्करण को 10.0.0.0 में बदल दिया।

<UsingTask TaskName="Microsoft.Reporting.RdlCompile" AssemblyName="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 

यह 'काम किया।

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