2013-02-15 55 views
1

我对MSBuild相当陌生,发现它纯粹的力量,同时使我们的许多流程自动化。我目前正在为我们的Web项目设置我们的TARGETS文件,并且我正在设置一个全局权限ACL,以便在DEBUG模式下构建应用程序。MSBuild权限 - ACL - 整个IIS文件夹

我明白了,这些应该是在Debug.pubxml,(插入发布配置文件的名称等)

在VS,当应用程序使用IIS快速运行,整个应用程序是可写的,这是适合调试。我想在使用DEBUG配置文件中的WebDeploy将应用程序部署到IIS时提供相同的行为。

我跟着Sayed's Blog,其中概述了如何设置文件夹权限,并最终转移到以下解决方案 - 这为在任何文件夹上设置权限提供了一个很好的可重用模式。 Microsoft IIS Forum Post

但是,根据我对这两个示例的了解,我一直无法在部署目录中成功设置'读取,写入'aclAccess。我相信应该是$(_ MSDeployDirPath_FullPath)。

作为子注释,是否有任何关于构建这些MSBuild文件的建议?例如。将组件拆分出来以便它们可重用,或命名模式以便开发人员更容易理解发生的事情?

最良好的祝愿,劳伦斯

回答

1

的后下和Sayed's help via Twitter导致一个解决方案,更好地了解双方的解决方案。

本例中的MSBuild规则放置在'Debug.pubxml'文件中。这是需要整个IIS目录可写的发布配置文件。要在{project-name} .wpp.targets文件中的项目位置使其成为'默认'行为。

进一步阅读:MSDN Article on Publishing Profiles (.pubxml)

1如上述,读取的MSBuild * .targets文件是非常有用的。

<!-- Make entire IIS directory writable --> 
<Target Name="SetupCustomAcls" AfterTargets="AddIisSettingAndFileContentsToSourceManifest"> 
<Message Text="SetupCustomAcls" Importance="high"/> 
<ItemGroup> 
    <MsDeploySourceManifest Include="setAcl"> 
    <Path>$(_MSDeployDirPath_FullPath)</Path> 
    <setAclAccess>Modify</setAclAccess> 
    <setAclResourceType>Directory</setAclResourceType> 
    <AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings> 
    </MsDeploySourceManifest> 
</ItemGroup> 
</Target> 

<Target Name="DeclareCustomParameters" AfterTargets="AddIisAndContentDeclareParametersItems"> 
<Message Text="DeclareCustomParameters" Importance="high"/> 
<ItemGroup> 
    <MsDeployDeclareParameters Include="CustomSetAclParam"> 
    <Kind>ProviderPath</Kind> 
    <Scope>setAcl</Scope> 
    <Match>^$(_EscapeRegEx_MSDeployDirPath)$</Match> 
    <Description>Add write permission to the root folder.</Description> 
    <DefaultValue>{$(_MsDeployParameterNameForContentPath)}</DefaultValue> 
    <Value>$(_DestinationContentPath)</Value> 
    <Tags>Hidden</Tags> 
    <Priority>$(VsSetAclPriority)</Priority> 
    <ExcludeFromSetParameter>True</ExcludeFromSetParameter> 
    </MsDeployDeclareParameters> 
</ItemGroup> 
    </Target> 
+0

+1为发布配置文件。非常好! – 2013-03-14 19:24:21

1

我有问题,我自己用MsDeploy任务,我直接选择了对Msdeploy可执行文件。 这是为我工作。

<Exec Command="msdeploy -verb:sync -source:setacl -dest:setacl=&quot;%(FoldersWithSpecialPermissions.Identity)&quot;,setAclUser=NetworkService,setAclAccess=Modify,computerName=$(ComputerName),UserName=$(UserName),password=$(Password),authtype=basic -allowUntrusted" WorkingDirectory="$(MSDeployPath)" /> 

关于模式,做最好的事情是打开

C:\ Program Files文件(x86)的\的MSBuild \微软\ VisualStudio的\ 11.0 ***目标

并检查Microsoft如何组织构建模板。

我希望帮助