我在项目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'设置的值 provider与物理路径一起使用。
这里缺少什么?
答案 0 :(得分:0)
自从你提出这个问题已经有一段时间了,但从表面上看,这看起来或多或少是正确的:指定绝对路径的关键点是你在AdditionalProviderSettings中包含setAclUser,以及setAclUser。
最终,虽然构建程序包时SourceManifest文件可能显示正确,但似乎重要的是在创建的zip中包含的archive.xml文件中的setAcl元素上的setAclUser设置。打开它并确保存在setAclUser所需的值。
同样,Visual Studio可以自由使用MSBuild文件所涉及的缓存;实际上,似乎Visual Studio将尊重仅对pubxml文件和项目文件(如csproj)所做的更改。在对任何其他目标文件进行更改时,应关闭Visual Studio并在进行每次编辑后重新打开。这可以解释为什么你看似正确的解决方案不起作用:它可能只是陈旧的目标文件缓存。