2016-04-12 7 views
14

का उपयोग कर एक कदम में कई डॉटनैट कोर परियोजनाओं संकलितमान लिया जाये कि इस फ़ोल्डर संरचना डॉटनैट CLI

SampleApp 
     global.json 
     Src 
      Web    
       project.json 
       Startup.cs 
       ... 
      Model 
       project.json 
       Startup.cs 
       ... 

एक dotnet का उपयोग कर दोनों परियोजनाओं कैसे संकलित करता है? (कमांड लाइन, दृश्य स्टूडियो में नहीं से)

आप रूट फ़ोल्डर स्तर पर dotnet build चलाते हैं तो आप प्राप्त

फ़ाइल नहीं मिल सकी .. project.json

मैं वहाँ देख सकते हैं सीएलआई रेपो पर this outstanding enhancement है लेकिन यह फरवरी 2 से है।

किसी भी स्क्रिप्ट को पर सभी src सब-फ़ोल्डरों पर अंधेरे से कॉल करने से पहले निर्भरता को ध्यान में रखना होगा।

उत्तर

3

अभी तक ऐसा कोई टूल नहीं है। यहां तक ​​कि KoreBuild, एएसपी.NET टीम का उपयोग करने वाला टूल, प्रत्येक फ़ोल्डर में अंधेरे से चला जाता है और dotnet build/pack को आमंत्रित करता है।

अच्छी बात यह है कि dotnet build अब निर्भरता को पुन: संकलित करने के लिए पर्याप्त स्मार्ट नहीं है अगर वे नहीं बदले हैं, तो अब कोई समस्या नहीं है।

+0

ठीक है अपने पिछले टिप्पणी मुझे पता है कि अगर उदाहरण में कहते हैं कि इसके बाद के संस्करण '' web' model' पर निर्भर करता है तो आप सीडी को मॉडल फ़ोल्डर में पहले का निर्माण करने की जरूरत नहीं है बनाया यह - आप वेब फ़ोल्डर में बस 'dotnet build' कर सकते हैं और यह' मॉडल 'संकलित करेगा - – wal

1

मुझे एक समान आवश्यकता थी।

@echo off 
for /D %%d in (*) do (
    cd %%d 
    cd 
    dotnet restore 
    dotnet build 
    cd .. 
) 
exit /b 
21

dotnet build आदेश ग्लोब पैटर्न स्वीकार करते हैं: यह मेरा समाधान नहीं है। तो आप यह कर सकते हैं:

dotnet build Src/**/project.json 
+3

डॉटनेट पैक इसका समर्थन नहीं करता है (उन लोगों के लिए जो इसे देखकर समाप्त हो सकते हैं और उसी तकनीक का उपयोग करने की उम्मीद कर रहे हैं) –

1

जीएनयू मेक का उपयोग करें। मैं अपनी परियोजनाओं का निर्माण करने के लिए इसका इस्तेमाल करता हूं। आपको बस अपने प्रोजेक्ट रूट फ़ोल्डर में मेकफ़ाइल बनाना है। आप निर्देशिका में मेकफ़ाइल घोंसला कर सकते हैं और एक शीर्ष स्तर मेकफ़ाइल है जो उपनिर्देशिका चलाता है। फिर आप अपने प्रत्येक "सब प्रोजेक्ट्स" फ़ोल्डरों के लिए मेकफ़ाइल सेट अप करते हैं और किसी भी कॉमंडलाइन टूल को चलाते हैं। डॉटनेट कोर के साथ डॉटनेट है।

प्रतीक्षा करें ... जीएनयू - "जीएनयू यूनिक्स नहीं है" यह यूनिक्स/लिनक्स एप्लिकेशन है ... मैं विंडोज चलाता हूं। खैर अच्छी खबर यह है कि आप विंडोज़ में ऐसा कर सकते हैं। मैं अपने git-bash स्थापना (विंडोज़ के लिए गिट) के माध्यम से make.exe का उपयोग कर रहा हूँ। आपको बनाने के सिग्विन बंदरगाह को जाना होगा। (google: "गिट-बैश के लिए बनाएं") फिर इसे सिगविन फ़ोल्डर के नीचे अपनी बिन निर्देशिका में स्थापित करें। यदि आप वास्तव में चाहते थे तो आप सिगविन भी इंस्टॉल कर सकते हैं।

जीएनयू-मेक का उपयोग करने के बारे में अच्छी बात यह सार्वभौमिक है। चूंकि डॉटनेट कोर प्लेटफॉर्म अज्ञेयवादी है, इसलिए प्रत्येक वातावरण मैक/फ्रीबीएसडी/लिनक्स में "मेक" संभवतः पहले से स्थापित है। इसे अपने विंडोज मशीन और परियोजनाओं में जोड़ने से मुझे बहुत समझदारी मिलती है। चूंकि आप प्रोजेक्ट अब सभी के द्वारा उसी तरह बनाया जा सकता है।

मेरी कुछ परियोजनाओं में डॉकरफाइल के साथ डॉकर कंटेनर बनाने, या पैकेज को स्नैप करने, परीक्षण करने के लिए तैनात करने आदि की आवश्यकता है ... बनाना (पोड क्षमा करें) इसे आसान बनाता है।

यहां सरल परियोजनाओं मेकफ़ाइल का नमूना है। अपने आप को 'बनाना' चलाना 'सब कुछ बनाना' कहने जैसा है, आप 'cd ./subdir' जैसे कमांड सेट कर सकते हैं; अपने .phoney निर्देशों में से एक के रूप में बनाओ।(गूगल: "Makefile प्रलेखन")

project_drive?=/c/prj 
nuget_repo_name?=Local_Nuget_Packages 
local_nuget_dir?=$(project_drive)/$(nuget_repo_name) 

RELEASE_VERSION:= `grep "<Version>" *.csproj | cut -d '>' -f 2 | cut -d '<' -f 1` 

.PHONEY: clean release test doc nuget install debug_nuget debug_install 

all: doc MSBuild 

test: 
    ./test.sh 

MSBuild: 
    dotnet build 

clean: 
    dotnet clean; dotnet restore 

release: 
    dotnet build -c Release 

doc: 
    doxygen ./Doxyfile.config 

nuget: release 
    dotnet pack -c Release 

install: 
    cp ./bin/Release/*.$(RELEASE_VERSION).nupkg $(local_nuget_dir) 

debug_nuget: MSBuild 
    dotnet pack 

debug_install: 
    cp ./bin/debug/*.$(RELEASE_VERSION).nupkg $(local_nuget_dir) 
संबंधित मुद्दे