2012-02-24 7 views
4

TFSには、Web Zipパッケージを公開しているMsBuildビルドがあります。 これは私が使用していますコマンドラインです:MsBuild PackageLocationを使用した展開ドロップファイルのアクセス許可

/t:Build;Package 
/p:DeployOnBuild=true;Configuration=Release; 
DeployTarget=Package;PackageLocation=\\xxx\MyApp.zip 

それが正常に動作していると予想されるように、それはまた、web.configファイル内のパラメータを置き換えています。 私が直面する唯一の問題は、パッケージファイルに適用されるアクセス許可です。 今ファイルが内に配備されています * \のmyshareの\ myappの\ * そしてフォルダが許可を得て設定されます。 Everyone:フルコントロール フォルダ内のパッケージには、権限を持っている: TFSAdmin:フルコントロール 他に何もないので、私はそれを開くこともコピーすることもできません...私はそれを避ける方法はありますか?

+0

良い質問! –

答えて

0

これまでのところ、問題が解決しない場合は解決できないようです。 ビルドプロセスの最後にバッチファイルをワークフロー内で実行することで、簡単かつ簡単な回避策が見つかりました。

<Exec Command="icacls "\\xxx\MyApp.zip" /grant User:F" ContinueOnError="true" /> 

簡単な権利のシーケンス:

ICACLS \\xxx\MyPackage.zip /GRANT Everyone:F 
ICACLS \\xxx\MyPackage.zip /GRANT Users:F 
+0

権限を再継承するために/ resetスイッチを使用することをお勧めします。 – Vertigo

0

MSBuildの.projファイルに追加します。私は再設定権限がすることは非常に古いICACLSを使用するバッチファイルで Fを - フルアクセス M - アクセスの変更 RX - 読み取りおよび実行アクセス R読み取り専用アクセス W書き込み専用アクセス

0

あなたのウェブサイトからアクセスできるようにしたい場合は、.csprojの一番下にある "PostBuild"イベントに次のスニペットを置くことができます(テキストエディタを使って手動で.csprojファイルを編集する必要があります)。

<Target Name="AfterBuild"> 
    <!-- grant everyone the modify right recursively even for files and folders created dynamically in the future --> 
    <!-- note the use of (OI) and (CI) flags which stand for object inherit & container inherit these flags  --> 
    <!-- indicate that subordinate containers will inherit the same access control element or ace this means that --> 
    <!-- files and folders created in the future within the targeted folder will get the same permissions   --> 

    <Exec Command=" icacls &quot;.\Logs&quot;    /grant  Users:(CI)(OI)M /T " ContinueOnError="true" />σ 
    <Exec Command=" icacls &quot;.\Logs&quot;    /grant IIS_IUSRS:(CI)(OI)M /T " ContinueOnError="true" /> 

</Target> 

追記:デプロイ・オン・リモート・サーバーのVisual Studioの機能あなたのウェブサイトを展開する/公開を使用する場合、それはフォルダのアクセス許可は、おそらく保存され、あなたがしなければならないことされないことは言うまでもないです何らかの種類のインストール後のスクリプトを使用して再適用します(恐らくここに示す 'icacls'アプローチを使用して)。この種のインストール後のスクリプトはおそらくWebDeployの一部であるはずです.WebDeployを使用していないので、あなたの走行距離はこの特定の面で変わることがあります。

関連する問題