.net - MsBuild 目标不起作用
问题描述
从 Visual Studio 2017 在服务器上发布后,我想更改 .csproj 文件以执行我的目标。
<PropertyGroup>
<PostBuildEvent>copy $(ProjectDir)\lib\Oracle.ManagedDataAccess.dll $(ProjectDir)\bin</PostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent>copy $(ProjectDir)\lib\Oracle.ManagedDataAccess.dll $(ProjectDir)\bin</PreBuildEvent>
</PropertyGroup>
<ItemGroup>
<OracleSourceFile Include="$(ProjectDir)\lib\Oracle.ManagedDataAccess.dll"/>
<OracleDestinationFolder Include="$(ProjectDir)\bin"/>
</ItemGroup>
<Target Name="OracleTarget" AfterTargets="MSDeployPublish" >
<Copy
SourceFiles="@(OracleSourceFile)"
DestinationFolder="@(OracleDestinationFolder)">
</Copy>
</Target>
但这不起作用。我没有在发布输出中看到我的目标已执行。我做错了什么?
解决方案
在阅读了关于部署 Web 应用程序的 Microsoft 最佳实践之后,特别是在这个页面(其中讨论了部署额外文件),我终于修改了我的 .pubxml,如下所示:
<Target Name="OracleCollectFiles">
<ItemGroup>
<OracleSourceFile Include="lib\**\*" />
<FilesForPackagingFromProject Include="%(OracleSourceFile.Identity)">
<DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
OracleCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
OracleCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
</Project>
推荐阅读
- xamarin - 尚未依赖 nuget 时的包依赖
- javascript - 在 Chrome 扩展脚本之间共享功能的最佳方式是什么?
- javascript - 页面加载AngularJS时文本框绑定不起作用
- amqp - AMQP 的 DistributionMode 是否类似于 Tibco 中的自动确认?
- git - Git将本地仓库指向远程
- java - 如何在java中实现决策矩阵?
- android - 如何在 MaterialAlertDialogBuilder 中的视图周围添加边距?
- python - PyGitHub 问题 get_comments()
- java - 在 Camel-Spring-Boot 设置中从外部 JAR 配置 Camel 路由
- spring-boot - 读取 DataSerializable 时出现问题,命名空间:0,ID:0 同时反序列化 hazelcast 地图对象