2010-04-06 7 views
19

मेरे पास SQLite असेंबली के लिए दो संदर्भ हैं, 32-बिट के लिए एक और 64-बिट के लिए एक, जो ऐसा लगता है (यह चेतावनी से छुटकारा पाने का प्रयास करने के लिए एक परीक्षण प्रोजेक्ट है, पर लटका नहीं है पथ):चेतावनी से छुटकारा पाने के लिए .NET परियोजना में सशर्त संदर्भ?

<Reference Condition=" '$(Platform)' == 'x64' " Include="System.Data.SQLite, Version=1.0.61.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64"> 
    <SpecificVersion>True</SpecificVersion> 
    <HintPath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit\System.Data.SQLite.DLL</HintPath> 
</Reference> 
<Reference Condition=" '$(Platform)' == 'x86' " Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86"> 
    <SpecificVersion>True</SpecificVersion> 
    <HintPath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit\System.Data.SQLite.DLL</HintPath> 
</Reference> 

यह निम्न चेतावनी का उत्पादन:

Warning 1 The referenced component 'System.Data.SQLite' could not be found.  

यह संभव मुझे इस चेतावनी से छुटकारा पाने के लिए है?

एक तरीका मैंने इसे देखा है जब मैं अपनी परियोजना को 32-बिट के रूप में कॉन्फ़िगर करने के लिए कॉन्फ़िगर करता हूं, और निर्माण मशीन को 64-बिट के लिए निर्माण करते समय संदर्भ को ठीक करने देता है, लेकिन यह थोड़ा अजीब लगता है और शायद प्रवण त्रुटियों के लिए।

कोई अन्य विकल्प?

कारण मैं इससे छुटकारा पाने का कारण यह है कि चेतावनी टीमसिटी द्वारा स्पष्ट रूप से उठाई जा रही है और समय-समय पर मुझे देखने की आवश्यकता के रूप में चिह्नित किया गया है, इसलिए मैं इसे पूरी तरह से छुटकारा पाने के लिए चाहता हूं।


संपादित: जवाब के अनुसार, मैं इस कोशिश की:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 
    ... 
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit</SqlitePath> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> 
    ... 
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\32-bit</SqlitePath> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> 
    ... 
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit</SqlitePath> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> 
    ... 
    <SqlitePath>..\..\LVK Libraries\SQLite3\version_1.0.65.0\64-bit</SqlitePath> 
</PropertyGroup> 

और फिर मेरे संदर्भ में:

<Reference Include="System.Data.SQLite"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>$(SqlitePath)\System.Data.SQLite.DLL</HintPath> 
</Reference> 

यह चेतावनी से छुटकारा मिला है, लेकिन यह सही है ?

उत्तर

8

यदि SQL लाइट के लिए कोई "AnyCPU" असेंबली नहीं है तो आप अलग-अलग बिल्डों के साथ फंस गए हैं।

अलग-अलग बिल्ड करने के लिए एक ऐसी संपत्ति बनाएं जो एक सशर्त संपत्ति समूह में सही पथ प्रदान करे और फिर उस संपत्ति का उपयोग एक संदर्भ के लिए करें (यानी संदर्भ आइटम समूह के बाहर सशर्त स्थानांतरित करें)। ऐसी संपत्ति (कस्टम FXCop एक्सटेंशन के लिए) here का उपयोग करने का एक उदाहरण है, आप .csproj फ़ाइल की शुरुआत में परिभाषित कई सशर्त गुणों को देख सकते हैं।

(सारांश:। वी.एस. संभावनाओं MSBuild करता है के सभी संभाल नहीं करता है)

+0

मैंने अपने उत्तर को जो सही लगता है उसके साथ संपादित किया है, क्या आप इसे देख सकते हैं और मुझे बता सकते हैं कि क्या आपका मतलब था? –

+0

@Lasse: यह सही प्रतीत होता है। – Richard

1

मैं इसे देखना रूप में, अपने मूल परियोजना के साथ समस्या यह आप <SpecificVersion>True</SpecificVersion>System.Data.SQLite, Version=1.0.61.0 को निर्दिष्ट है, जबकि वास्तविक विधानसभा संस्करण 1.0 था कि था .65। असेंबली नाम में Reference में फिक्सिंग संस्करण की मदद करनी चाहिए।

+0

हम्म, आपके पास एक बिंदु है, हालांकि यह x86 और x64 दोनों के लिए चेतावनी उत्पन्न करता है, और उनमें से एक स्पष्ट रूप से सही है। मैं इस पर गौर करूंगा। –

+0

स्पष्ट रूप से मुझे फ़ाइलों के साथ समस्या है, फ़ाइल उस स्थिति में वास्तव में 1.0.61 थी। संदर्भ विजुअल स्टूडियो के माध्यम से मैन्युअल रूप से जोड़ा गया था और इस प्रकार सही होना चाहिए। हालांकि मैं फ़ाइलों को ठीक कर दूंगा, लेकिन यह चेतावनियों के लिए अपराधी नहीं था। –

+0

दो और सुझाव - 'आइटम समूह' पर 'कंडीशन' डालें, न कि 'संदर्भ' पर; पूर्ण पथ का प्रयास करें। –

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