2017-03-15 6 views
14

मैंने xproj कोर परियोजनाओं को csproj पर माइग्रेट कर दिया है। सब ठीक काम कर रहे हैं, हालांकि मुझे अभी भी प्रकाशित कॉन्फ़िगरेशन के साथ समस्याएं हैं। दस्तावेज़ीकरण के आधार पर: https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json-to-csproj मुझे प्रकाशित होने के दौरान फ़ाइलों को बाहर करने में सक्षम होना चाहिए।विजुअल स्टूडियो 2017 सीस्पोज़ कोर फ़ाइल बहिष्करण

मैं च

<None Include="*.json" CopyToPublishDirectory="Never" /> 
<None Include="wwwroot\**\*.map;wwwroot\**\*.less;*.pdb" CopyToPublishDirectory="Never" /> 
<None Include="wwwroot\**\*" CopyToPublishDirectory="PreserveNewest" /> 

लेकिन फिर भी *.map, .json और .less फ़ाइलें फ़ोल्डर प्रकाशित करने के लिए कॉपी कर रहे हैं करने के लिए निम्नलिखित लाइनों जोड़ दिया है। मैंने अलग-अलग आदेश की कोशिश की किस्मत नहीं।

कुछ फ़ाइलों को प्रकाशन से बाहर कैसे निकालें?

+0

अपनी परियोजना शुरू करता हैं 'परियोजना एसडीके =" माइक्रोसॉफ्ट.NET.Sdk.Web "के साथ? – natemcmaster

उत्तर

21

लघु जवाब: बजाय निम्नलिखित स्निपेट का उपयोग:

<ItemGroup> 
    <Content Update="**\*.map;**\*.less;*.json" CopyToPublishDirectory="Never" /> 
</ItemGroup> 

तुम भी "DefaultItemExcludes" संपत्ति के लिए इन पैटर्न जोड़ सकते हैं।

<PropertyGroup> 
    <DefaultItemExcludes>$(DefaultItemExcludes);**\*.map;**\*.less;*.json</DefaultItemExcludes> 
</PropertyGroup> 

लंबे समय तक जवाब:

Microsoft.NET.Sdk और Microsoft.NET.Sdk.Web सामान्य वस्तुओं के लिए सेटिंग्स में शामिल हैं। ये आपके प्रोजेक्ट फ़ोल्डर में आइटम्स के लिए ग्लोब हैं जिन्हें हमेशा संकलित, एम्बेडेड, आउटपुट में कॉपी किया जाना चाहिए आदि। इसे नियंत्रित करने के लिए कुछ सेटिंग्स हैं, लेकिन वे अच्छी तरह से प्रलेखित नहीं हैं।

यदि आप किसी डिफ़ॉल्ट ग्लोब द्वारा पहले से शामिल किसी आइटम के लिए metadata value (जैसे CopyToPublishDirectory सेटिंग) को बदलना चाहते हैं, तो आपको "Include" के बजाय "अपडेट" का उपयोग करना होगा।

देखने के लिए क्या हुड के नीचे हो रहा है, यहाँ Microsoft.NET.Sdk और Microsoft.NET.Sdk.Web के लिए डिफ़ॉल्ट आइटम सेटिंग्स

https://github.com/dotnet/sdk/blob/dev15.1.x/src/Tasks/Microsoft.NET.Build.Tasks/build/Microsoft.NET.Sdk.DefaultItems.props#L19-L27

https://github.com/aspnet/websdk/blob/rel/vs2017rtw/src/Web/Microsoft.NET.Sdk.Web.ProjectSystem.Targets/netstandard1.0/Microsoft.NET.Sdk.Web.ProjectSystem.props#L25-L40

+0

'डॉटनेट माइग्रेट' उपकरण के बाद से गलत जवाब गलत तरीके से (या जानबूझकर) कनवर्ट्स को 'सामग्री' के बजाय 'none' प्रकार के आइटमों में शामिल नहीं किया जाता है। मुझे ध्यान रखना चाहिए कि 'DefaultItemExcludes' संपत्ति में जोड़ने से समाधान एक्सप्लोरर से आइटम भी बाहर निकल जाएंगे। कोई उन प्रोप/लक्ष्य फ़ाइलों को '% ProgramFiles (x86)% \ Microsoft Visual Studio \ 2017 \ \ MSBuild \ Sdks' फ़ोल्डर के अंतर्गत स्थापित कर सकता है। – Vertigo

+0

' $ (DefaultItemExcludes); ** \ *। नक्शा; ** \ *। जेएस 'ऑटो-जेन फाइलों को बाहर करने के लिए -> वीएस कोड' files.exclude में 'settings.json' के समान' ' – SliverNinja

+0

क्या यूआई से इसे सेट करने का कोई तरीका नहीं है? मैं nlog.config प्रकाशित नहीं कर सकता – doker

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