5

में वीबी से सी # तक स्विच करें मैं विजुअल स्टूडियो 11 बीटा में एक गतिविधि लाइब्रेरी बना रहा हूं (हालांकि मैंने उसी परिणाम के साथ वीएस -2010 में अपने सभी चरणों को दोहराया है), .NET 4.0 ढांचे को लक्षित करना।वर्कफ़्लो डिज़ाइनर

जैसा कि मैंने वर्कफ़्लो डिज़ाइनर के माध्यम से तर्क दर्ज करना शुरू किया, मैंने देखा कि "डिफ़ॉल्ट मान बॉक्स में एक वीबी अभिव्यक्ति" संदेश दर्ज करें। मुझे यकीन नहीं है कि भाषा संदर्भ को वीबी से सी # में कैसे बदला जाए।

प्रोजेक्ट बनाने के लिए, मैं इन चरणों का पालन: स्थापित में

  1. जाओ फ़ाइल>न्यू करने और परियोजना का चयन करें ...

  2. >नई परियोजना संवाद विंडो के टेम्पलेट अनुभाग, का चयन करें दृश्य सी #>कार्यप्रवाह>गतिविधि लाइब्रेरी

  3. नाम हमेशा की तरह परियोजना, और ठीक

और वह मूल रूप से यह है पर क्लिक करें। मैंने तब देखा कि डिफ़ॉल्ट Activity1.xaml फ़ाइल डिफ़ॉल्ट मान फ़ील्ड में VB की अपेक्षा कर रही थी। मैं इसे नष्ट कर दिया और फिर एक नई गतिविधि बनाने के लिए इन चरणों का पालन किया:

  1. परियोजना पर राइट क्लिक करें और जोड़े>नया आइटम का चयन करें ...

  2. जोड़े नए आइटम में संवाद खिड़की, स्थापित>विजुअल C# आइटम>कार्यप्रवाह>गतिविधि

  3. पर नेविगेट
  4. नाम गतिविधि और ठीक क्लिक करें

यह एक ही परिणाम था, डिफ़ॉल्ट मान क्षेत्रों एक वीबी अभिव्यक्ति उम्मीद कर रहे हैं।

जब मैं एक्सएएमएल कोड देखता हूं, तो मैं स्पष्ट रूप से Microsoft.VisualBasic.Activities नामस्थान सूचीबद्ध कर सकता हूं और VisualBasic.Settings तत्व देख सकता हूं, लेकिन मुझे यकीन नहीं है कि इसे बदलने के लिए क्या करना है; हर बार जब मैं कोशिश करता हूं, तो मैं चीजों को खराब कर देता हूं। यहां एक्सएएमएल कोड जेनरेट किया जा रहा है:

<Activity mc:Ignorable="sads sap" x:Class="THINKImport.CustomerAddOrderAdd" 
xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
xmlns:local="clr-namespace:THINKImport.THINKWebReference" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:mva="clr-namespace:Microsoft.VisualBasic.Activities;assembly=System.Activities" 
xmlns:s="clr-namespace:System;assembly=System.Core" 
xmlns:s1="clr-namespace:System;assembly=System" 
xmlns:s2="clr-namespace:System;assembly=System.ServiceModel" 
xmlns:s3="clr-namespace:System;assembly=mscorlib" 
xmlns:sads="http://schemas.microsoft.com/netfx/2010/xaml/activities/debugger" 
xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" 
xmlns:t="clr-namespace:THINKImport" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
<x:Members> 
    <x:Property Name="user_login_data" Type="InArgument(local:user_login_data)" /> 
    <!--Removed the other properties for brevity--> 
    </x:Members> 
    <sap:VirtualizedContainerService.HintSize>440,440</sap:VirtualizedContainerService.HintSize> 
    <mva:VisualBasic.Settings>Assembly references and imported namespaces for internal implementation</mva:VisualBasic.Settings> 
</Activity> 

उत्तर

5

सी # भाव

इससे पहले, वर्कफ़्लो में सभी भाव केवल विजुअल बेसिक में लिखा जा सकता है। में .NET Framework 4.5 आरसी, विजुअल बेसिक एक्सप्रेशन केवल विज़ुअल बेसिक का उपयोग करके बनाई गई परियोजनाओं के लिए उपयोग किए जाते हैं। दृश्य सी # परियोजनाएं अब अभिव्यक्तियों के लिए सी # का उपयोग करें। एक पूरी तरह से कार्यात्मक सी # अभिव्यक्ति संपादक प्रदान किया गया है जो व्याकरण हाइलाइटिंग और इंटेलिजेंस जैसी क्षमताओं प्रदान करता है। पिछले संस्करणों में बनाए गए सी # वर्कफ़्लो प्रोजेक्ट्स विज़ुअल बेसिक एक्सप्रेशन का उपयोग जारी रहेगा।

बीटा 1 के रूप में, सी # अभिव्यक्ति डिज़ाइन-टाइम पर मान्य हैं। सी # अभिव्यक्तियों में त्रुटियों को एक लाल वेवी अंडरलाइन के साथ चिह्नित किया जाएगा।

अधिक: What's New in Windows Workflow Foundation in .NET 4.5

5

मैं इस मुद्दे को समझने में सक्षम था।

सबसे पहले, हालांकि, मैं मूल कारण here खोज सकता था। संक्षेप में, यह कहता है कि वीबीएनईटी अभिव्यक्ति संपादक में इस्तेमाल किया जाना चाहिए भले ही कार्यक्रम सी # में हो।

तो, मैं उस बारे में थोड़ी सी बात कर रहा था, लेकिन मैंने एक्सएएमएल कोड पर एक और दरार लेने का फैसला किया क्योंकि, डब्ल्यूएफ ट्यूटोरियल के माध्यम से काम करने में, निश्चित रूप से एक ऐसी गतिविधि थी जो मैं डिजाइनर पर काम कर रहा था जो अभिव्यक्ति स्वीकार करेगा सी # में मैंने उस परियोजना को खोला और एक्सएएमएल कोड के माध्यम से चला गया।

<sap2010:ExpressionActivityEditor.ExpressionActivityEditor>C#</sap2010:ExpressionActivityEditor.ExpressionActivityEditor> 

मैं MSDN लाइब्रेरी की खोज और documentation for the ExpressionActivityEditor class पाया:

यह तो है कि मैं इस लाइन देखा है। जैसा कि मैं कह सकता हूं उतना ही अच्छा है, यह .NET 4.5 के लिए नया है। मेरे विशेष मामले में, मेरे प्रोजेक्ट में .NET 4.5 को लक्षित नहीं करने का कोई कारण नहीं है, इसलिए मैंने इसे बदल दिया। एक बार समाधान फिर से खोलने के बाद, तुरंत, सभी अभिव्यक्ति संपादक टेक्स्ट फ़ील्ड और बक्से सी # स्वीकार करेंगे। "ताजा शुरू करने" के लिए, मैंने उस गतिविधि फ़ाइल को हटा दिया जिस पर मैं काम कर रहा था और एक नया बनाया। अगर कोई रुचि है, यहाँ है कि उत्पन्न XAML कोड है:

<Activity mc:Ignorable="sap sap2010 sads" x:Class="THINKImport.CustomerAddOrderAdd" 
     xmlns="http://schemas.microsoft.com/netfx/2009/xaml/activities" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:sads="http://schemas.microsoft.com/netfx/2010/xaml/activities/debugger" 
     xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" 
     xmlns:sap2010="http://schemas.microsoft.com/netfx/2010/xaml/activities/presentation" 
     xmlns:sco="clr-namespace:System.Collections.ObjectModel;assembly=mscorlib" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:THINKWebReference="clr-namespace:THINKImport.THINKWebReference"> 
    <x:Members> 
    <x:Property Name="user_login_data" Type="InArgument(THINKWebReference:user_login_data)"> 
    <x:Property.Attributes> 
     <RequiredArgumentAttribute /> 
     </x:Property.Attributes> 
    </x:Property> 
    <x:Property Name="customer_data" Type="InArgument(THINKWebReference:customer_data)" /> 
    <!--Remainder of Properties removed for brevity--> 
    </x:Members> 
    <sap2010:ExpressionActivityEditor.ExpressionActivityEditor>C#</sap2010:ExpressionActivityEditor.ExpressionActivityEditor> 
    <TextExpression.NamespacesForImplementation> 
    <sco:Collection x:TypeArguments="x:String"> 
     <x:String>System</x:String> 
     <x:String>System.Collections.Generic</x:String> 
     <x:String>System.Data</x:String> 
     <x:String>System.Linq</x:String> 
     <x:String>System.Text</x:String> 
    </sco:Collection> 
    </TextExpression.NamespacesForImplementation> 
    <TextExpression.ReferencesForImplementation> 
    <sco:Collection x:TypeArguments="AssemblyReference"> 
     <AssemblyReference>mscorlib</AssemblyReference> 
     <AssemblyReference>System</AssemblyReference> 
     <AssemblyReference>System.Core</AssemblyReference> 
     <AssemblyReference>System.Data</AssemblyReference> 
     <AssemblyReference>System.ServiceModel</AssemblyReference> 
     <AssemblyReference>System.Xml</AssemblyReference> 
    </sco:Collection> 
    </TextExpression.ReferencesForImplementation> 
    <sap2010:WorkflowViewState.IdRef> 
    THINKImport.CustomerAddOrderAdd_1 
    </sap2010:WorkflowViewState.IdRef> 
    <sap2010:WorkflowViewState.ViewStateManager> 
    <sap2010:ViewStateManager> 
     <sap2010:ViewStateData Id="THINKImport.CustomerAddOrderAdd_1" sap:VirtualizedContainerService.HintSize="440,440" /> 
    </sap2010:ViewStateManager> 
    </sap2010:WorkflowViewState.ViewStateManager> 
</Activity> 

तो, काफ़ी अलग (मेरे लिए, वैसे भी), लेकिन मैं सी # अब उपयोग कर सकते हैं, तो मैं खुश हूँ।

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