管理分散在目录树中的资源

时间:2012-09-01 13:15:27

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

我有一个包含多个项目的.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中进行调试时,以及安装了应用程序时,这一切都运行良好。因为文件在磁盘上,所以它们都是受版本控制的。

我的问题在于我复制目录和文件结构的第二种情况。我无法使用资源,现在业务逻辑位于单独的项目中,资源文件不会复制到前端项目的输出目录中。

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

1 个答案:

答案 0 :(得分:0)

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

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