मेरे पास csproj फ़ाइलों का संग्रह है जो सभी स्रोत फ़ाइलों के एक ही सेट को संदर्भित करते हैं, लेकिन इसे थोड़ा अलग डेटा डेटा बनाने के लिए है इसलिए मुझे प्रोजेक्ट फ़ाइलों को अलग रखने की आवश्यकता है। जैसे एक ही प्रोजेक्ट के विनफ़ोन, एक्सबॉक्स, डेस्कटॉप, मोनो टच वेरिएंट हैं।मोनो और मोनो डेवेल के साथ मल्टीटाइक्लिंग सी # प्रोजेक्ट फाइलें
चीजों को वास्तव में डुप्लिकेट किया गया है, जैसे कि संकलन करने के लिए .cs फ़ाइलों की सूची की तरह, मैं सूची को एक फ़ाइल में समेकित करना चाहता हूं, इसलिए मैं यह सुनिश्चित नहीं करता कि सभी भिन्नताओं को सिंक में रखा गया हो । मैंने मूल रूप से .csprojs से स्रोतों को हटाकर और उन्हें एक .targets फ़ाइल में डालकर ऐसा करने की कोशिश की जो सभी csprojs द्वारा आयात किया गया था, लेकिन इससे स्रोत फ़ाइलें VS और MonoDevelop दोनों से गायब हो गईं।
मेरा दूसरा प्रयास डेस्कटॉप csproj फ़ाइल को प्राथमिक बनाकर था, और सभी बदलावों को कुछ सशर्त तर्क के साथ csproj आयात करने देना था। यह स्रोत फ़ाइलों को मुख्य csproj से संपादन योग्य रखता है और वे सभी स्वादों में बनाते हैं। अब विजुअल स्टूडियो समझता है कि मैं क्या करने की कोशिश कर रहा था लेकिन मोनो डेवलप इसे नहीं बना सकता है। Monodevelop समाधान में कोर DLL का iOS संस्करण धूसर हो और कहते हैं "(सक्रिय विन्यास में निर्मित नहीं)"
मैं भी csproj और समाधान है, जो अतीत की समस्याओं monodevelop है कि प्राप्त करने के लिए लगता है xbuilding की कोशिश की है लेकिन monotouch विधानसभाओं को हल करने से संबंधित अन्य चीजों पर हिचकिचाहट। मैंने सोचा था कि मोनो डेवेल ने एक्सबिल्ड का इस्तेमाल किया था, लेकिन शायद नहीं?
चूंकि यह विंडोज एमएसबिल्ड में काम करता है ऐसा लगता है कि यह मोनो में एक बग या समर्थित सुविधा नहीं है। या शायद पूरे परिदृश्य से निपटने का एक बेहतर तरीका है ... सोचा कि मैं यहां पूछूंगा।
स्पष्ट जानकारी के लिए मेरे Core.iOS.csproj फ़ाइल इस तरह दिखता है:
<?xml version="1.0" encoding="utf-8"?>
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="Build"
ToolsVersion="4.0" >
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>10.0.0</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{AE37B15F-F4BE-48DE-9F20-F00A601EC89E}</ProjectGuid>
<ProjectTypeGuids>{6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<AssemblyName>Core.iOS</AssemblyName>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="monotouch" />
</ItemGroup>
<Import Project=".\Core.csproj" />
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>
और मेरे Core.csproj फ़ाइल इस तरह दिखता है:,
<?xml version="1.0" encoding="utf-8"?>
<Project
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
DefaultTargets="Build"
ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>Core</RootNamespace>
</PropertyGroup>
<!-- Using AssemblyName's presence to check for whether this is imported. -->
<PropertyGroup Condition=" '$(AssemblyName)' == '' ">
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{FC495BD8-11B1-46B0-A9DE-F245A0CBEE94}</ProjectGuid>
<AssemblyName>Core</AssemblyName>
<SignManifests>false</SignManifests>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<!-- properties similar to Debug -->
</PropertyGroup>
<ItemGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<Reference Include="System" />
<Reference Include="System.Core" />
</ItemGroup>
<Import Condition=" '$(AssemblyName)' == 'Core' " Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
<Compile Include="[...]" />
<Compile Include="[...]" />
</Project>
और जैसे मैंने कहा, एक WinPhone और XBox360 प्रोजेक्ट्स के लिए वीएस एक्सप्रेस का उपयोग करते समय इसकी भिन्नता सही ढंग से काम कर रही है। क्या यह कुछ काम करना चाहिए? क्या ऐसा करने के लिए इससे अच्छा तरीका है?
धन्यवाद,
अच्छा लगता है, और मोनोडिफायर आंतरिक रूप से xbuild का उपयोग करता है। आपने किस संस्करण को स्थापित किया है? – skolima
देखने के लिए धन्यवाद। चूंकि मैं खुद को इस सवाल का जवाब देने के लिए शोध कर रहा था, मुझे यह धारणा मिली थी कि मोनो टच परियोजनाओं ने एक्सबिल्ड को छोड़ दिया और सीधे एमसीएस का आह्वान किया, लेकिन मैंने इसे गलत तरीके से पढ़ा होगा या पुराने लेख को देख रहा हूं, लेकिन अगर ऐसा होता तो मैं भी ' टी पता नहीं है कि आईडीई का उपयोग यह तय करने के लिए xbuild का उपयोग करेगा कि कौन से लक्ष्य वैध हैं ... MonoDevelop का मेरा संस्करण 2.8.8.4 है। अगर आपको कुछ भी मदद मिलती है तो कृपया मुझे बताएं यदि आपको रिप्रो की आवश्यकता है। –