我希望在从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>
但这不起作用。我没有在发布输出中看到我的目标已被执行。我做错了什么?
答案 0 :(得分:1)
在阅读Microsoft best practices about deploying web application后,特别是this page(谈到部署额外文件),我最终修改了我的.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>
答案 1 :(得分:0)
MsBuild Target不起作用
您可以从File System
发布项目。 File System
不支持目标“MSDeployPublish”。
“我们目前不支持在发布后执行自定义目标 从VS获取文件系统协议。如果从命令发布 然而,目标将被执行。“
因此,我们可以使用MSBuild命令行通过指定目标/t:OracleTarget
来执行此自定义目标:
msbuild "YourSolutionFile" /t:Build,OracleTarget /p:DeployOnBuild=true /p:PublishProfile=YourPublishFile.pubxml
除了,针对此问题的另一个解决方案,您可以使用目标CopyAllFilesToSingleFolderForPackage
代替MSDeployPublish
:
<Target Name="OracleTarget" AfterTargets="CopyAllFilesToSingleFolderForPackage" >
<Copy
SourceFiles="@(OracleSourceFile)"
DestinationFolder="@(OracleDestinationFolder)">
</Copy>
</Target>
希望这有帮助。