3

プロジェクト wpp.targets ファイルの ItemGroup にこのアイテムを追加しています。

<MsDeploySourceManifest Include="setAcl">
    <Path>%windir%\TEMP</Path>
    <setAclUser>IIS_IUSRS</setAclUser>
    <setAclAccess>Read,Write,Modify</setAclAccess>
    <setAclResourceType>Directory</setAclResourceType>
    <AdditionalProviderSettings>setAclUser;setAclResourceType;setAclAccess</AdditionalProviderSettings>
</MsDeploySourceManifest>

これはパラメーターセクションにあります

<MsDeployDeclareParameters Include="TempFolderPermissionSetAclParam">
    <Kind>ProviderPath</Kind>
    <Scope>setAcl</Scope>
    <Description>Add read, write permission for IIS_IUSRS to the temp folder.</Description>
    <DefaultValue>%windir%\TEMP</DefaultValue>
    <Value>%windir%\TEMP</Value>
    <Tags>Hidden</Tags>
    <Priority>$(VsSetAclPriority)</Priority>
    <ExcludeFromSetParameter>True</ExcludeFromSetParameter>
  </MsDeployDeclareParameters>

マニフェストxmlファイルにこの行を生成します

しかし、次のようなエラー メッセージがあります。「エラー: 'setAcl' プロバイダーが物理パスで使用されている場合、'setAclUser' 設定の値を指定する必要があります。

ここに何が欠けていますか?

4

1 に答える 1

0

あなたがこれを尋ねてからしばらく経ちましたが、表面的にはこれは多かれ少なかれ正しいように見えます: 絶対パスを指定するための重要なポイントは、setAclUser の要素だけでなく、AdditionalProviderSettings に setAclUser を含めることです。

最終的に、パッケージをビルドするときに SourceManifest ファイルが正しく表示される場合でも、重要なのは、作成された zip に含まれる archive.xml ファイル内の setAcl 要素の setAclUser 設定です。それを開き、setAclUser に期待する値が存在することを確認します。

同様に、Visual Studio は、MSBuild ファイルに関するキャッシュを自由に使用します。実際には、Visual Studio は pubxml ファイルと csproj などのプロジェクト ファイルに加えられた変更のみを尊重するようです。他のターゲット ファイルに変更を加える場合は、Visual Studio を閉じて、編集を行うたびに再度開く必要があります。これは、一見正しいソリューションが機能しなかった理由を説明している可能性があります。単に古いターゲット ファイル キャッシュが原因だった可能性があります。

于 2015-03-18T22:10:39.987 に答える