2014-04-08 1 views
7

몇 가지 추가 작업을 수행하는 게시 프로필을 사용하여 명령 줄에서 게시중인 웹 프로젝트가 있습니다 (일부 파일 및 폴더 제외, 다른 파일 게시, 프로젝트).MSBuild는 FileSystem 대신 명령 줄에서 명령 줄을 통해 웹 프로젝트를 게시합니다.

2 대의 컴퓨터 (A와 B)가 두 개 있는데, 마우스 오른쪽 단추로 클릭> 게시 ...에서 Visual Studio로 올바른 게시 프로필을 선택하면 올바르게 작동합니다.

역사적으로, 두 시스템에, 그것은 또한 다음과 같은 명령 줄을 사용했다 : 그러나 지금, 기계 B가 제대로 게시되지

msbuild MyProject.csproj /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=myProfile /v:n 

.

게시 프로필은 상단에 <WebPublishMethod>FileSystem</WebPublishMethod으로 구성되어 있지만 로그에서는 명백한 이유없이 Package 게시 유형을 시도하고 있습니다. 예상대로 그냥 Package을하고 있기 때문에

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
     <WebPublishMethod>FileSystem</WebPublishMethod> 
     <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
     <LastUsedPlatform>Any CPU</LastUsedPlatform> 
     <SiteUrlToLaunchAfterPublish /> 
     <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish> 
     <ExcludeApp_Data>False</ExcludeApp_Data> 
     <publishUrl>..\Production</publishUrl> 
     <DeleteExistingFiles>False</DeleteExistingFiles> 
     <ExcludeFoldersFromDeployment>Content;Scripts;Pages</ExcludeFoldersFromDeployment> 
     <ExcludeFilesFromDeployment>index-dev.html;index.html;debug.html;JSLintNet.json;Gruntfile.js;package.json;packages.config;publishall.bat;publishapi.bat</ExcludeFilesFromDeployment> 
     <BuildDependsOn> 
      $(BuildDependsOn); 
      RunGrunt; 
      PublishApi; 
     </BuildDependsOn> 
    </PropertyGroup> 
    <Target Name="RunGrunt"> 
     <Message Text="Running grunt production..." /> 
     <Exec Command="grunt production" /> 
    </Target> 
    <Target Name="PublishApi"> 
     <Message Text="Publishing API..." /> 
     <Exec Command="publishapi" /> 
    </Target> 
</Project> 

은, 어떤 파일이 이제까지 publishUrl 디렉토리에 표시되지 않습니다 :

여기에 전체 공개 프로필입니다. 다시 말하지만 게시 프로필은 오른쪽 클릭 게시를 사용하여 VS2013에서 올바르게 작동합니다.

**ValidatePublishProfileSettings**: 
    Validating PublishProfile(myProfile) settings. 

그러나 기계 B에 표시되지 않는 : 시스템 A의 로그에서

나는이 발췌를 얻을.

**WebFileSystemPublish**: 
    Creating directory "..\Production". 
    Copying obj\Release\Package\PackageTmp\cache.manifest to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\cache.manifest. 
    Copying obj\Release\Package\PackageTmp\Global.asax to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\Global.asax. 
    Copying obj\Release\Package\PackageTmp\Web.config to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\Web.config. 
    Copying obj\Release\Package\PackageTmp\bin\MyProject.dll to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\Blithe.Web.Collect.dll. 

나중에 시스템 B의 로그에서, 위의 자리에, 그것은 포함 :

**Package**: 
    Invoking Web Deploy to generate the package with the following settings: 
    $(LocalIisVersion) is 7 
    $(DestinationIisVersion) is 7 
    $(UseIis) is True 
    $(IisUrl) is <<<some url>>> 
    $(IncludeIisSettings) is False 
    $(_DeploymentUseIis) is False 
    $(DestinationUseIis) is False 

유일한 차이점 나중에 포함 된 시스템 A의 로그에

두 컴퓨터 사이에서 생각할 수있는 것은 'Windows Azure SDK for .NET (VS2013) - 2.3'의 컴퓨터 B (문제 기계)에 업데이트를 설치 한 것입니다. 어떻게 그리고 왜 이것이 이것을 깨뜨릴 수 있었는지 모든 아이디어?

/p:PublishProfileRootFolder="Properties\PublishProfiles"을 위에서 설명한 here과 같이 추가하려고 시도했지만 작동하지 않았습니다.

답변

14

추가 : 명령에

/p:VisualStudioVersion=12.0

일했다.

컴퓨터 B에는 Visual Studio 2008이 설치되어 있지만 컴퓨터 A에는 설치되어 있지 않습니다. 버전을 12.0 또는 11.0으로 설정합니다. 10.0으로 설정하면 게시 프로파일이 무시되고 패키지 설치 만 수행됩니다.

놀랍게도 기본값은 10.0으로 보입니다.

이 문제는 웹 게시에 몇 가지 변경 사항이있는 Azure SDK 2.3으로 업데이트 될 때까지 나오지 않아이 문제가 발생할 수 있습니다.