Comment utiliser MsBuild MsDeployPublish pour cibler le système de fichiers local?
je suis en train de reproduire le Visual Studio 2010 "Publier..."commande (applicable aux projets D'Application Web) où je choisirais dans L'UI publier la méthode: "système de fichiers".
c'est ma tentative...
%msbuild%/t: MsDeployPublish / property: MsDeployServiceUrl= "file: / / / d:MyDeploymentFolder"; MsDeployPublishMethod=" File System "" d:MySourceFolderProject.csproj"
... et avoir essayé une méthode de "système de fichiers", "Système de Fichiers", "Local", et quelques autres.
L'erreur que J'obtiens implique que MsDeploy essaye toujours de pousser vers un serveur IIS:
"D:MySourceFolderProject.csproj" (MsDeployPub
lish target) (1) ->
(MSDeployPublish target) ->
C:Program Files (x86)MSBuildMicrosoftVisualStudiov10.0WebMicrosoft.Web
.Publishing.targets(3847,5): error : Web deployment task failed.(The metabase k
ey '/lm/w3svc' could not be found.) [D:MySourceFolderProject.csproj]
C:Program Files (x86)MSBuildMicrosoftVisualStudiov10.0WebMicrosoft.Web.P
ublishing.targets(3847,5): error : r [D:MySourceFolderProject.csproj]
C:Program Files (x86)MSBuildMicrosoftVisualStudiov10.0WebMicrosoft.Web.P
ublishing.targets(3847,5): error : The metabase key '/lm/w3svc' could not be fo
und.r [D:MySourceFolderProject.csproj]
C:Program Files (x86)MSBuildMicrosoftVisualStudiov10.0WebMicrosoft.Web.P
ublishing.targets(3847,5): error : Unable to access the IIS configuration syste
m. Please make sure you have IIS 7 (or later) installed.r [D:MySourceFolderProject.csproj]
C:Program Files (x86)MSBuildMicrosoftVisualStudiov10.0WebMicrosoft.Web.P
ublishing.targets(3847,5): error : Retrieving the COM class factory for compone
nt with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} failed due to the followin
g error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REG
DB_E_CLASSNOTREG)). [D:MySourceFolderProject.csproj]
Comment puis-je cibler le système de fichiers pour le déploiement, comme Visual Studio me laisse normalement dans l'interface graphique?
3 réponses
msbuild ProjectFile.csproj /p:Configuration=Release ^
/p:Platform=AnyCPU ^
/t:WebPublish ^
/p:WebPublishMethod=FileSystem ^
/p:DeleteExistingFiles=True ^
/p:publishUrl=c:\output
ou si vous construisez le fichier solution:
msbuild Solution.sln /p:Configuration=Release ^
/p:DeployOnBuild=True ^
/p:DeployDefaultTarget=WebPublish ^
/p:WebPublishMethod=FileSystem ^
/p:DeleteExistingFiles=True ^
/p:publishUrl=c:\output
j'ai renoncé à essayer de faire copier des fichiers Web déployables par MSBuild (et je ne fais rien d'autre que cela), donc je l'ai scripté dans PowerShell et je suis vraiment content du résultat. Beaucoup plus vite que tout ce que J'ai essayé avec MSBuild. Voici l'essentiel ( littéralement ):
function copy-deployable-web-files($proj_path, $deploy_dir) {
# copy files where Build Action = "Content"
$proj_dir = split-path -parent $proj_path
[xml]$xml = get-content $proj_path
$xml.Project.ItemGroup | % { $_.Content } | % { $_.Include } | ? { $_ } | % {
$from = "$proj_dir$_"
$to = split-path -parent "$deploy_dir$_"
if (!(test-path $to)) { md $to }
cp $from $to
}
# copy everything in bin
cp "$proj_dir\bin" $deploy_dir -recurse
}
Je ne pense pas que vous soyez assez précis avec ce que vous dites msbuild.
a tiré ceci d'un de mes signets sur le sujet, si tout va bien il aidera: http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild