【问题标题】:Manage resources scattered across a directory tree管理分散在目录树中的资源
【发布时间】:2012-08-27 00:32:14
【问题描述】:

我有一个包含多个项目的 .Net 解决方案。其中一个项目包含 WPF 项目所依赖的所有业务逻辑。

业务逻辑项目使用一堆资源文件来实现不同的功能。

以前这两个项目只有一个,所以我当时所做的就是将所有这些资源文件都设置为“复制到输出目录”为true。正在运行的应用程序组成文件路径如下。

static readonly string ResourceFilePath = 
    Path.Combine(
        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
        "resources\\thefile.ext");

我知道我可以使用资源并且效果很好(除了扩展名消失,以及将. 字符替换为_)。

但是,有时我的目录树会保存一堆文件。正在运行的应用程序将整个内容复制到某个临时位置。

与单个资源文件一样,我将所有文件设置为复制到 Visual Studio 中的输出目录。正在运行的应用程序将组成目录的路径,然后使用该路径将所有内容递归复制到临时位置。

static readonly string ResourceFilesPath = 
    Path.Combine(
        Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),
        "resources\\somedirectory\\");

public void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
...

这一切在 Visual Studio 中调试时运行良好,并且安装了应用程序。而且因为文件在磁盘上,所以它们是单独版本控制的。

我的问题是我复制目录和文件结构的第二种情况。资源我做不到,现在业务逻辑在一个单独的项目中,资源文件没有复制到前端项目的输出目录中。

我的问题是:是否有更好的方法来处理某些目录树中的许多资源?

【问题讨论】:

    标签: c# .net visual-studio resources embedded-resource


    【解决方案1】:

    也许您可以使用 GetAssemblyGetEntryAssembly 来获取对 WPF 程序集的引用,以便 Location 正确返回所需的输出路径?

    或者您可以为业务逻辑项目设置构建事件以将资源复制到 WPF 项目的输出路径。

    【讨论】:

    • 我确实选择在前端项目中使用构建事件。我只需要重新提高我的 xcopy 技能;-)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2010-11-26
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多