Szukam polecenia do uruchomienia przeciwko temu, MSBuild.exe
że po prostu bierze projekt MVC 4 i publikuje go w podanym katalogu.
Na przykład,
MSBuild <solution>/<project>.csproj -publish -output=c:/folder
Jest to oczywiście nieprawidłowa składnia. Próbuję uprościć swoje pytanie.
To pytanie dotyczy kompilacji XML, ale nie próbuję robić nic z tak dużą ilością szczegółów.
Po prostu próbuję przeprowadzić wdrożenie.
Dalej w dół tego pytania ktoś mówi o „MSDeploy”. Mogę się temu przyjrzeć, ale czy to jedyna opcja? Nie mam możliwości zainstalowania wdrożenia internetowego na serwerze. W takim przypadku wszystko, co naprawdę muszę zrobić, to „Opublikuj” i wyślij zawartość opublikowanego projektu do podanego katalogu na serwerze / systemie plików.
Czy ktoś ma jedną wkładkę, której mogę użyć?
Czy muszę używać MSDeploy?
Czy MSDeploy wymaga zainstalowania na serwerze wdrożenia internetowego?
Czy skonfigurowanie wdrożenia internetowego na serwerze nie wymaga skonfigurowania niektórych portów, uprawnień i zainstalowania niektórych dodatków usług IIS?
Chciałbym po prostu wykonać coś prostego.
źródło
Utwórz plik build.xml, który wygląda jak poniżej
Uruchom wiersz polecenia programu Visual Studio
Uruchom msbuild build.xml
<?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Build"> <PropertyGroup> <Build>$(MSBuildProjectDirectory)\Build</Build> <ProjectFile>MyProject.csproj</ProjectFile> <ProjectName>MyProjectNameInVisualStudio</ProjectName> <CopyTo>$(MSBuildProjectDirectory)\CopyTo</CopyTo> </PropertyGroup> <Target Name="Build"> <RemoveDir Directories="$(Build)"/> <MSBuild Projects="$(ProjectFile)" Properties="Configuration=Release;OutputPath=$(Build);OutDir=$(Build)/"></MSBuild> <Exec Command="robocopy.exe $(Build)\_PublishedWebsites\$(ProjectName) $(CopyTo) /e /is if %errorlevel% leq 4 exit 0 else exit %errorlevel%"/> </Target> </Project>
źródło
Poniższe polecenie działa idealnie:
msbuild Myproject.sln /t:Rebuild /p:outdir="c:\outproject\\" /p:Configuration=Release /p:Platform="Any CPU"
źródło
Znalazłem, że odpowiedzią było wdrożenie domyślnej konfiguracji, tj. Debugowania. Konfiguracja wybrana w profilu publikowania wydaje się być ignorowana przez program MSBuild. W związku z tym zmieniłem polecenie, aby określić poprawną konfigurację dla wdrożenia ...
msbuild mysln.sln /p:Configuration=[config-name] /p:DeployOnBuild=true /p:PublishProfile=[profile-name]
gdzie config-name = Release lub inna utworzona konfiguracja kompilacji
źródło
W przypadku projektów internetowych musisz budować, jak powyżej, ale musisz także spakować / skopiować. Używamy kopii pliku zamiast „publikowania” ...
Również; używamy DEBUG / RELEASE do budowy strony internetowej; ale potem rzeczywiste środowiska, np. „QA” lub „PROD” do obsługi transformacji web.config.
Więc tworzymy go początkowo za pomocą RELEASE, a następnie pakujemy go za pomocą QA - w poniższym przykładzie.
<PropertyGroup> <SolutionName>XXX.Website</SolutionName> <ProjectName>XXX.Website</ProjectName> <IisFolderName>XXX</IisFolderName> <SolutionConfiguration>QA</SolutionConfiguration> <!--Configuration will be set based on user selection--> <SolutionDir>$(MSBuildThisFileDirectory)..</SolutionDir> <OutputLocation>$(SolutionDir)\bin\</OutputLocation> <WebServer>mywebserver.com</WebServer> </PropertyGroup> <Target Name="BuildPackage"> <MSBuild Projects="$(SolutionDir)\$(SolutionName).sln" ContinueOnError="false" Targets="Clean;Rebuild" Properties="Configuration=Release" /> <MSBuild Projects="$(SolutionDir)\$(ProjectName)\$(ProjectName).csproj" ContinueOnError="false" Targets="Package" Properties="Configuration=$(SolutionConfiguration);AutoParameterizationWebConfigConnectionStrings=False" /> </Target> <Target Name="CopyOutput"> <ItemGroup> <PackagedFiles Include="$(SolutionDir)\$(ProjectName)\obj\$(SolutionConfiguration)\Package\PackageTmp\**\*.*"/> </ItemGroup> <Copy SourceFiles="@(PackagedFiles)" DestinationFiles="@(PackagedFiles->'\\$(WebServer)\$(IisFolderName)\$(SolutionConfiguration)\%(RecursiveDir)%(Filename)%(Extension)')"/> </Target>
Więc;
źródło