Teşekkür yardımcı
<target name="deployProd">
<exec program="<framework_dir>\msbuild.exe" commandline="<project>/<project>.csproj /property:Configuration=PublishProd /property:ApplicationVersion=${build.label}.*;PublishUrl=\\<prod_location>\binups$\;InstallUrl=\\<prod_location>\binups$\;UpdateUrl=\\<prod_location>\binups$\;BootstrapperComponentsUrl=\\<prod_location>\prereqs$\ /target:publish"/>
<copy todir="<project>\bin\PublishProd\<project>.publish">
<fileset basedir=".">
<include name="publish.htm"/>
</fileset>
<filterchain>
<replacetokens>
<token key="CURRENT_VERSION" value="${build.label}"/>
</replacetokens>
</filterchain>
</copy>
</target>
Umut: Burada
gibi benim yapı komut dosyası görünüyordu şeydir. Uyguladığımız son çözüm, her cevaptan biraz aldı.
Basit toplu iş dosyaları kullanarak birden çok ortamla çalışmayı daha kolay ele aldık. Bunun bunu yapmanın en iyi yolu olduğunu öne sürmüyorum, ama verdiğimiz senaryo ve gereksinimler için bu iyi çalıştı. Proje isminizle "Proje" eki ve çevre adınızla "Çevre" (dev, test, aşama, üretim, her neyse).
"ccnet.config" dosyanızın görev alanı aşağıdadır.
<!-- override settings -->
<exec>
<executable>F:\Source\Project\Environment\CruiseControl\CopySettings.bat</executable>
</exec>
<!-- compile -->
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>F:\Source\Project\Environment\</workingDirectory>
<projectFile>Project.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
<targets>Rebuild</targets>
<timeout>0</timeout>
<logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
<!-- clickonce publish -->
<exec>
<executable>F:\Source\Project\Environment\CruiseControl\Publish.bat</executable>
</exec>
Göreceksiniz ilk şey
CopySettings.bat ishal. Bu, veritabanı bağlantıları gibi ortam için belirli ayarları kopyalar.
Sonraki, standart MSBUILD görevini çalıştırır. Herhangi bir derleme hatası burada yakalanır ve normal olarak ele alınır.
Yürütülecek son şey Publish.bat. Bu aslında bir komut satırı satırından bir MSBUILD "yeniden" gerçekleştirir ve CruiseControl gelen parametreler otomatik olarak geçirilir ve yerleşik. Ardından, "yayınlama" hedefi için MSBUILD çağrılır. Tam olarak aynı parametreler, yeniden oluşturuldukça yayınlanır. Bu, yapı numaralarını senkronize halde tutar. Ayrıca, yürütülebilir dosyalarımız farklı şekilde adlandırılmıştır (örn. - ProjectDev ve ProjectTest). Farklı sürüm numaraları ve isimleriyle sonuçlanıyoruz ve bu da ClickOnce'un kendi işini yapmasına izin veriyor.
Publish.bat'ın son kısmı, gerçek dosyaları yeni evlerine kopyalar. Publish.htm'yi tüm kullanıcılarımız ağda olduğu için kullanmıyoruz, onlara yalnızca kendi manifest dosyasına masaüstünde bir kısayol veriyoruz ve her zaman doğru yürütülebilir dosyayı çalıştıran bir sürüm numarasıyla tıklayıp çalıştırabiliriz. Seyir kontrolü. İşte
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\app.config" "F:\Source\Project\Environment\Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.Designer.vb" "F:\Source\Project\Environment\Project\My Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.settings" "F:\Source\Project\Environment\Project\My Project" /Y /I /R
CopySettings.bat Ve son olarak, burada muhtemelen CruiseControl ve MsBuild geliştiricileri şeyler amacı vardı bu şekilde bitmedi, Publish.bat
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:rebuild "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationRevision=%CCNetLabel% /property:AssemblyName="ProjectEnvironment" /property:PublishUrl="\\Server\bin\Project\Environment\\"
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:publish "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationVersion="1.0.0.%CCNetLabel%" /property:AssemblyVersion="1.0.0.%CCNetLabel%" /property:AssemblyName="ProjectEnvironment"
XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish" "F:\Binary\Project\Environment" /Y /I
XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish\Application Files" "F:\Binary\Project\Environment\Application Files" /Y /I /S
Dediğim gibi mesafesindedir Çalış, ama işe yarıyor. Bu çalışmayı dün yapmanız gerekiyorsa, aradığınız çözüm bu olabilir. İyi şanslar!
Sadece bunun biraz modası geçmiş olduğunu belirtmek istiyorum. Gönderinizin doğru olduğunu kabul edersek, MSBuild şu anda birçok etkin projede gerçekleştirdiğim UNC hisselerinin dağıtımını desteklemek için güncellendi. –
Teşekkürler, James. Evet, bu aslında 2008'de, tüm bunlar taze ve seksi iken cevaplandı; 7 yıl sonra ilgili olmayabilir. –