gpt4 book ai didi

c# - 向已发布的 MVC API 项目添加额外文件

转载 作者:IT王子 更新时间:2023-10-29 04:43:41 26 4
gpt4 key购买 nike

我正在尝试将额外的 XML 文件添加到发布过程中。我有一个 MVC API 项目,它还有另一个用于 Controller 的项目 (V1.0)。我们正在使用为每个项目创建 .XML 文件的 self 记录帮助功能。在本地机器上构建时一切正常,但在发布时(使用向导)它不会包含此文件。

我一直在尝试更新发布配置文件 (.pubxml) 文件,如下所述:

http://www.asp.net/mvc/tutorials/deployment/visual-studio-web-deployment/deploying-extra-files

但没有成功。我可以看到发生了以下情况:

  • 我会打扫卫生以确保周围没有任何东西。
  • 我用向导发布
  • 我可以在 apiproject\bin\中看到所有文件,包括 apiprojectv1 xml 和 dll 文件
  • 我可以在 apiproject\obj\x86\Release\AspnetCompileMerge\Source\bin 中看到它有 apiprojectv1 dll 但没有 xml 文件
  • 我可以在 apiprojet\obj\x86\Release\AspnetCompileMerge\TempBuildDir\bin 中看到与上面相同的内容
  • 我可以在 apiproject\obj\x86\Release\Package\PackageTmp\bin 中看到与上面相同的内容

我不确定为什么文件没有被复制。这是我的完整 pubxml 文件:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish />
<publishUrl>\\myserver\wwwroot\apiproject</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\bin\apiprojectv1.XML" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension) </DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
</Project>

编辑

我忘记了一个主要部分,将下面的内容放在 pubxml 文件的底部:

 <PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>

<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>

我没有得到文件,但现在收到关于找不到文件的错误,(我现在可以调试)。

最佳答案

我错过了两件事:

  1. 实际告诉它执行操作的第二个属性组。
  2. 路径不对,必须使用项目目录路径

现在看起来像这样并且有效:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish />
<publishUrl>\\myserver\wwwroot\apiproject</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>

<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="$(MSBuildProjectDirectory)\bin\apiprojectv1.XML" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension) </DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>

<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>

<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>

</Project>

关于c# - 向已发布的 MVC API 项目添加额外文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16790322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com