2011-04-13 5 views
1

ASP.NET 프로젝트 빌드를 자동화하기 위해 MSBuild.xml 파일을 만들었습니다. 프로젝트를 만들고, 게시하고, 압축하고, zip을 네트워크 공유에 복사합니다. 이전에 네트워크 폴더에 이미 로그인 한 상태라면이 모든 것이 완벽하게 작동합니다. 내 컴퓨터에서 로그 아웃 할 때까지 네트워크 공유에 액세스하면 사용자 이름과 암호가 기억됩니다. 이전에 로그인하지 않은 경우 빌드 파일을 실행할 때 "실패 : 알 수없는 사용자 이름 또는 잘못된 비밀번호"오류가 발생합니다. 이전에 네트워크 공유에 액세스했는지 여부에 관계없이 빌드가 항상 작동하도록합니다.MSBuild를 사용하여 암호가 필요한 네트워크 공유에 파일을 복사하려면 어떻게합니까?

현재 복사 작업을 사용하여 zip 파일을 네트워크 공유로 복사하고 있습니다. 복사 작업 설명서를 확인했는데 자격 증명을 포함 할 수있는 방법이 없습니다. 그렇다면 필요한 사용자 이름과 암호를 전달하는 파일을 네트워크 공유에 어떻게 복사 할 수 있습니까?

다음은 사용중인 복사 작업의 예입니다. 모든 속성은 MSBuild.xml 파일의 상단에 정의되어 있습니다

<Target Name="CopyToServer"> 
    <Copy SourceFiles="$(ReleaseFolder)\$(ZipFileName).zip" DestinationFolder="$(WebServerRoot)" /> 
</Target> 

답변

1

하나의 해결책을 찾았습니다. 나는 그것에 만족하지 않고, 더 나은 해결책을 찾을 때까지 할 것입니다.

배치 파일에서 MSBuild 명령을 실행하면 runas 명령을 사용하여 MSBuild를 네트워크 공유에 액세스하는 데 필요한 권한이있는 사용자로 실행할 수 있습니다.

예.

runas /user:someWindowsUser "C:\PathToBatchFile" 
0
내가 특별 계정을 만들 reccoment 것

,의 원격 컴퓨터에서 해당 계정의 공유에 대한 읽기/쓰기 액세스를 빌더 말을하고, 제공 할 수 있습니다.

또는 컴퓨터에서 스크립트를 호출하여 세션을 열어 볼 수 있습니다. net use /?를 참조하십시오.

5

나는 동일한 문제가있었습니다. 하지만 RunAs을 사용하여 앱을 배포 할 때마다 비밀번호를 입력하고 싶지 않았습니다. 내가 환경 변수를 통해 설정 DestLogin 및 DestPass

<Target Name="CopyOutput"> 
    <ItemGroup> 
     <PackagedFiles Include="$(ProjectName)\obj\$(Configuration)\Package\PackageTmp\**\*.*"/> 
    </ItemGroup> 
    <Exec Command="net use $(DestPath) /user:$(DestLogin) $(DestPass)" ContinueOnError="false"/> 
    <Copy SourceFiles="@(PackagedFiles)" 
      DestinationFiles="@(PackagedFiles->'$(DestPath)\%(RecursiveDir)%(Filename)%(Extension)')" 
      ContinueOnError="true"/> 
    <Exec Command="net use $(DestPath) /delete" /> 
</Target> 

DestPath : 대신, 나는 Exec를 통해 net use 래핑 Copy 작업을 사용합니다.

Phil의 답변 덕분에 this one.

관련 문제