Ich suche nach einem Befehl, der für den ausgeführt wird MSBuild.exe
, der nur ein MVC 4-Projekt nimmt und es in einem bestimmten Verzeichnis veröffentlicht.
Zum Beispiel,
MSBuild <solution>/<project>.csproj -publish -output=c:/folder
Dies ist offensichtlich eine falsche Syntax. Ich versuche meine Frage zu vereinfachen.
Diese Frage spricht von einem Build-XML, aber ich versuche nicht, mit so vielen Details etwas zu tun.
Ich versuche einfach, eine Bereitstellung durchzuführen.
Weiter unten in dieser Frage spricht jemand von "MSDeploy". Ich kann das untersuchen, aber ist es die einzige Option? Ich kann Web Deploy nicht auf dem Server installieren. In diesem Fall muss ich nur "Veröffentlichen" und den Inhalt des veröffentlichten Projekts an ein bestimmtes Verzeichnis auf dem Server / Dateisystem senden.
Hat jemand einen Einzeiler, den ich verwenden kann?
Muss ich MSDeploy verwenden?
Erfordert MSDeploy die Installation von Web Deploy auf dem Server?
Erfordert das Einrichten der Webbereitstellung auf dem Server nicht das Einrichten einiger Ports, Berechtigungen und das Installieren einiger IIS-Add-Ons?
Ich würde gerne einfach etwas Einfaches ausführen.
quelle
Erstellen Sie eine build.xml-Datei, die wie folgt aussieht
Starten Sie die Visual Studio-Eingabeaufforderung
Führen Sie msbuild build.xml aus
<?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>
quelle
Der folgende Befehl funktioniert perfekt:
msbuild Myproject.sln /t:Rebuild /p:outdir="c:\outproject\\" /p:Configuration=Release /p:Platform="Any CPU"
quelle
Ich fand, dass die Antwort darin bestand, die Standardkonfiguration bereitzustellen, dh Debug. Die im Veröffentlichungsprofil ausgewählte Konfiguration scheint von MSBuild ignoriert zu werden. Dementsprechend habe ich den Befehl geändert, um die richtige Konfiguration für die Bereitstellung anzugeben ...
msbuild mysln.sln /p:Configuration=[config-name] /p:DeployOnBuild=true /p:PublishProfile=[profile-name]
Dabei ist config-name = Release oder eine andere von Ihnen erstellte Build-Konfiguration
quelle
Bei Webprojekten müssen Sie wie oben beschrieben erstellen, dann aber auch packen / kopieren. Wir verwenden eine Dateikopie anstelle der "Veröffentlichung" ...
Ebenfalls; Wir verwenden DEBUG / RELEASE, um die Website zu erstellen. aber dann tatsächliche Umgebungen, dh "QA" oder "PROD", um die web.config-Transformationen zu handhaben.
Also erstellen wir es zunächst mit RELEASE und verpacken es dann mit QA - im folgenden Beispiel.
<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>
Damit;
quelle