【发布时间】:2014-08-29 16:37:09
【问题描述】:
我们目前正在开发几个 Web 项目,并希望能够创建一个包含跨 Web 项目共享的用户控件的项目,而不必重新创建它们。根据我的发现,整个过程is a pain 因为每个项目都需要访问实际的ascx 文件,而不仅仅是对其的引用。
我的处理方法是:
1- 使用 Pre-Build 事件复制 .ascx 文件
从共享程序集到当前项目的工作文件夹。这适用于调试应用程序,但我们需要在文件系统发布期间做同样的事情。
2- 在发布过程中使用 MSBuild 目标复制 .ascx 文件
我在项目的配置文件中添加了以下目标:
<Target Name="AfterPublish" AfterTargets="PipelinePreDeployCopyAllFilesToOneFolder">
<Exec Command="xcopy.exe SourcePath OutputPath" />
</Target>
(请注意,SourcePath 和 TargetPath 是目录的完整路径。我在这里替换了它们以使其更短)
在文件系统发布后调用此目标(右键单击项目 -> 发布),但是,文件不会被复制到目标文件夹。
我已经确认目标被调用(通过更改Command=explorer.exe,会弹出一个 Windows 资源管理器窗口)并且还在CommandPrompt 上使用相同的确切路径运行xcopy.exe 命令,它确实工作正常。所以我不明白为什么它不能作为目标的一部分。有什么想法吗?
【问题讨论】:
标签: c# asp.net msbuild msbuild-target