c# 버전 msbuild를 사용하여 파일 시스템 게시 프로파일 실행



nuget 등록 (4)

게시 프로파일이 사용되지 않고 기본 패키징을하고있는 것처럼 보입니다. Microsoft 웹 게시 대상은 위에서 수행 한 모든 작업을 수행하며 구성을 기반으로 올바른 대상을 선택합니다.

TeamCity MSBuild 단계에서 아무 문제없이 작업 할 수있게되었지만 프로파일에 대한 명시 적 경로를 지정 했으므로 .pubxml (예 : FileSystemDebug)없이 이름으로 호출해야합니다. 표준 폴더에서 찾을 수 있습니다.

예:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe ./ProjectRoot/MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=FileSystemDebug

이 작업은 일반적으로 "C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web"에있는 Visual Studio 2012 버전의 Microsoft 웹 게시 대상을 사용하여 수행되었습니다. 사용 된 특정 배포 유형 대상에 대한 배포 폴더 확인

https://ffff65535.com

나는 ac # .Net 4.0 프로젝트를 VS2010으로 만들고 현재 VS2012로 액세스하고 있습니다.

이 웹 사이트의 필요한 파일 만 대상 위치 (C : \ builds \ MyProject [Files]) 에 게시하려고합니다 .

내 파일 구조 : ./ProjectRoot/MyProject.csproj ./ProjectRoot/Properties/PublishProfiles/FileSystemDebug.pubxml

MSBuild를 통해 다음을 실행합니다.

C : \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ MSBuild.exe ./ProjectRoot/MyProject.csproj / p : DeployOnBuild = true /p:PublishProfile=./ProjectRoot/Properties/PublishProfiles/FileSystemDebug.pubxml

FileSystemDebug.pubxml의 xml 파일은 다음과 같습니다.

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>C:\builds\MyProject\</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
  </PropertyGroup>
</Project>

결과 동작은 다음과 같습니다.

  • 여기에 zip 파일이 생성됩니다. ./ProjectRoot/obj/Debug/Package/MyProject.zip
  • <publishUrl>C:\builds\MyProject\</publishUrl> WTF에 배포되는 것은 없습니다 <publishUrl>C:\builds\MyProject\</publishUrl>
  • 생성 된 zip 파일은 돼지 조식과 응용 프로그램에 필요하지 않은 파일로 가득 차 있습니다.

Visual Studio에서이 게시 프로파일을 실행할 때 * C : \ builds \ MyProject *에 폴더가 만들어지고 원하는 정확한 아티팩트가 들어 있습니다.

msbuild에서이 간단한 결과를 얻으려면 어떻게해야합니까?


먼저 솔루션 (프로젝트)을 게시 할 수있는 개발자 PC의 Visual Studio 버전을 확인합니다. 표시된대로 VS 2013

 /p:VisualStudioVersion=12.0

위의 명령 줄을 추가하여 프로젝트를 빌드해야하는 Visual Studio 버전의 종류를 지정하십시오. 이전의 대답과 같이 전체 솔루션이 아닌 하나의 프로젝트 만 게시하려고 할 때 발생할 수 있습니다.


위의 모든 답변을 시도한 후에도 여전히 문제가있었습니다 (Visual Studio 2013 사용). 게시 폴더에 아무 것도 복사되지 않았습니다.

해결 방법은 솔루션 대신 개별 프로젝트에서 MSBuild를 실행하는 경우 Visual Studio 버전을 지정하는 추가 매개 변수를 추가해야한다는 것입니다.

/p:VisualStudioVersion=12.0

12.0 은 VS2013 용이며 사용중인 버전으로 교체하십시오. 일단이 매개 변수를 추가하면 방금 효과가있었습니다.

전체 명령 줄은 다음과 같습니다.

MSBuild C:\PathToMyProject\MyProject.csproj /p:DeployOnBuild=true /p:PublishProfile=MyPublishProfile /p:VisualStudioVersion=12.0

나는 그것을 여기에서 발견했다.

http://www.asp.net/mvc/overview/deployment/visual-studio-web-deployment/command-line-deployment

그들은 진술한다 :

솔루션 대신 개별 프로젝트를 지정하면 Visual Studio 버전을 지정하는 매개 변수를 추가해야합니다.


참고 : Visual Studio 2015에서 동일한 문제가 발생했습니다. 많은 시간이 지나면 이제 msbuild myproject.csproj /p:DeployOnBuild=true /p:PublishProfile=myprofile 있습니다.

작동하도록하려면 .csproj 파일을 편집해야했습니다. 그것은 다음과 같은 라인을 포함합니다 :

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" 
  Condition="false" />

이 줄을 다음과 같이 변경했습니다.

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" />

(필자는 10.0을 14.0으로 변경했는데 이것이 필요한지 확실하지 않았습니다.하지만 조건 부분을 확실히 제거해야했습니다.)





publish