我通过调用以下命令使用msbuild发布我的Web应用程序:
msbuild myweb.csproj /T:Package /P:PackageLocation=obj\Output\myweb.zip
Run Code Online (Sandbox Code Playgroud)
zip文件的内容始终是深层文件夹结构,包含从驱动器根目录到项目文件夹的完整路径.有什么方法可以让它更平坦吗?我想在zip中有一个像root这样的项目文件夹.
Ily*_*kov 12
您可以使用_PackageTempDir而不是PackageLocation类似于IIS的平面结构,但是如果您希望将.zip和.cmd与清单保持一致,那么如果不重写Microsoft.Web.Publishing.targets或者a,您就无法真正摆脱绝对路径由于使用var的方式而导致的自定义任务.
<_PackageTempDir>$(PackageTempRootDir)\PackageTmp</_PackageTempDir>
<_PackageTempDirFullPath>$([System.IO.Path]::GetFullPath($(_PackageTempDir))</_PackageTempDirFullPath>
<_MSDeployDirPath Include="$(_PackageTempDir)" />
<_MSDeployDirPath_FullPath>@(_MSDeployDirPath->'%(FullPath)')</_MSDeployDirPath_FullPath>
Run Code Online (Sandbox Code Playgroud)
然而,您可以通过使用本地共享隐藏绝对路径来欺骗msbuild并将其展平一点,如下所示:
net share foo=D:\Temp
msbuild WebApplication1.csproj /t:Package /p:PackageTempRootDir=\\localhost\foo
Run Code Online (Sandbox Code Playgroud)
这将改变你的深层本地路径 obj\Debug\Package\WebApplication1.zip\Content\_S_Slocalhost_Sfoo\PackageTmp
| 归档时间: |
|
| 查看次数: |
10434 次 |
| 最近记录: |