visual-studio - Visual Studio 发布,不包括发布目录中的自定义 dll
问题描述
我有一个 Azure 函数,它有一个assets
文件夹(需要一些东西),其中包含一些文件,包括、.pdb
等。.dll
.exe
当我使用 Visual Studio Publish 发布项目时,它会从该文件夹中删除 dll。
我已经尝试将其添加到 csproject 但仍然没有被复制
<ItemGroup>
<Content Include="assets\**\*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToPublishDirectory>Always</CopyToPublishDirectory>
</Content>
</ItemGroup>
也尝试进行构建后复制事件,但这也不起作用
xcopy "$(ProjectDir)assets\*.*" "$(TargetDir)\assets" /Y /I /E
左图包含文件夹的结构和解决方案具有的 dll,但是当发布发生时,我看不到已发布文件夹中的 dll。
如何将资产文件夹中的所有文件/文件夹复制到发布文件夹?
解决方案
尝试使用您自己的 MSBuild 目标而不是构建后事件。
我们需要扩展的目标称为CopyAllFilesToSingleFolder
. 这个目标有一个依赖属性,PipelinePreDeployCopyAllFilesToOneFolderDependsOn,我们可以利用它并注入我们自己的目标。因此,我们将创建一个名为 CustomCollectFiles 的目标并将其注入到进程中。我们通过以下方式实现这一点(请记住在 import 语句之后)。
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\Extra Files\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>Extra Files\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
创建项目 _CustomFiles 并在 Include 属性中告诉它拾取该文件夹中的所有文件及其下的任何文件夹。然后我使用这个项目来填充 FilesForPackagingFromProject 项目。这是 MSDeploy 实际用于添加额外文件的项目。另请注意,我声明了元数据 DestinationRelativePath 值。这将确定它将被放置在包中的相对路径。我在这里使用了 Extra Files%(RecursiveDir)%(Filename)%(Extension) 语句。这就是说将它放在包中与 Extra Files 文件夹下相同的相对位置。
请参阅此SO 线程以获取更多信息。
推荐阅读
- amazon-web-services - Spring Cloud + RDS(spring-cloud-starter-aws-jdbc)尽管存在但无法在启动时加载凭据
- c# - UNITY C# - 如何在运行时保存已在运行时实例化的游戏对象?
- kotlin - 多种可能类型的 Kotlin 类型推断?
- javascript - 如何使用支付请求 API 在 C#/.NET 环境中正确实现 Apple Pay?
- node.js - NG 命令显示不正确的节点版本
- python - python - 如何用python的re省略字符串的某些部分?
- nim-lang - 是否可以在 Nimble 中使用多个顶级源目录?
- android - Kotlin for Android:将 Google 地图标记图像设置为 URL
- flutter - 颤动中 SliverAppBar 上的圆形边框
- nativescript-angular - 使用 nativescript-drawingpad 从 Nativescript Angular 捕获绘图