IIS形式のフラットな構造にはPackageLocation
の代わりに_PackageTempDir
を使用できますが、マニフェストを指定して.zipと.cmdを保持する場合は、絶対にMicrosoft.Webを書き換えずに絶対パスから離れることはできません.Publishing.targetsまたはカスタムタスクは、varの使用方法のために削除されます。
あなたはしかし、トリックのMSBuildすることができますし、ローカルの共有と絶対パスを非表示にすることで、それを少し平らに、このような何か
<_PackageTempDir>$(PackageTempRootDir)\PackageTmp</_PackageTempDir>
<_PackageTempDirFullPath>$([System.IO.Path]::GetFullPath($(_PackageTempDir))</_PackageTempDirFullPath>
<_MSDeployDirPath Include="$(_PackageTempDir)" />
<_MSDeployDirPath_FullPath>@(_MSDeployDirPath->'%(FullPath)')</_MSDeployDirPath_FullPath>
:ような何かにあなたの深い地元のパスを変更します
net share foo=D:\Temp
msbuild WebApplication1.csproj /t:Package /p:PackageTempRootDir=\\localhost\foo
obj\Debug\Package\WebApplication1.zip\Content\_S_Slocalhost_Sfoo\PackageTmp
なぜPackageTempRootDirを_PackageTempDirに設定するのですか? –
@ScottStafford理由はなく、別のオプションです。私は 'PipelinePreDeployCopyAllFilesToOneFolder'を直接使用して、不必要な二重パッケージ化や時折のシンボリックリンクを防ぐようになりました。 –
その解決策を見て奇妙なこと...これは私にとって偉大な働きをしてくれました。 –