首页 > 解决方案 > 发布 WPF 应用程序时包括目录?

问题描述

我遇到的问题是 Visual Studio 中的发布设置。我试图包含的目录正在变平,并且存在冲突的文件导致两个问题。

我已经设法轻松地捆绑单个文件,但我还需要在构建应用程序时包含一个目录(包含文件)。

原因是 Unity(我正在嵌入)需要一个“UnityBuild_Data”目录(它也有自己的子目录)。

所以我发布的应用程序需要:

(WPF app files, i.e AppCore.exe & it's  files)
UnityBuild.exe
UnityBuild_Data/

... etc

因此,虽然我已经弄清楚如何包含 UnityBuild.exe,但我似乎无法包含统一所需的目录 (UnityBuild_Data)。因此,Unity 抱怨 Data 目录不存在。如果我手动转到我的应用程序的安装位置并将其放置在那里,一切正常。

似乎正在发生的事情是目录中的所有文件都被展平并放在根级别。

我已编辑项目文件 (.csproj) 以包含以下内容:

<ItemGroup>
<Content Include="$(SolutionDir)Dependencies\**\*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
</Content>
</ItemGroup>

在这种情况下,Dependencies 文件夹将位于解决方案目录中,并包含一个名为 UnityBuild_Data/ 的子目录

Solution/
-- Dependencies/
--  -- UnityBuild_Data/
            ** dlls and other files in here **

额外信息:

在我尝试构建甚至只是为了检查我是否遇到任何问题之后,这个错误,我相信这是因为 1)文件被展平而不是放入子目录 2)导致 dll 命名相同:

严重性代码描述项目文件行抑制状态错误未知的构建错误,'覆盖成员时违反继承安全规则:'System.Uri.System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization .StreamingContext)'。重写方法的安全可访问性必须与被重写方法的安全可访问性相匹配。第 8 行位置 87。AppCore.UI C:\Users\userj\Source\Repos\AppCore\src\AppCore.UI\App.xaml 8

如果我删除 UnityBuild_Data/Managed 中的任何冲突 dll,我的项目构建正常

但是问题仍然存在,当我通过 Visual Studio(创建安装程序)“发布”应用程序时,一切都变得扁平,并且“UnityBuild_Data”目录丢失(unity 抱怨错误)。

潜在的解决方案,但并不理想:

1)压缩目录,然后以某种方式提取应用程序代码?

2)创建目录并移动文件(重命名冲突的文件)

标签: c#wpf

解决方案


推荐阅读