我们目前正在开发几个 Web 项目,并希望能够创建一个包含跨 Web 项目共享的用户控件的项目,而不必重新创建它们。据我发现,整个过程很痛苦,因为每个项目都需要访问实际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 资源管理器窗口)并且还xcopy.exe
使用相同的确切路径运行命令CommandPrompt
并且它确实工作正常。所以我不明白为什么它不能作为目标的一部分。有任何想法吗?