【问题标题】:How to setup the target output path of a given resource file in Visual Studio如何在 Visual Studio 中设置给定资源文件的目标输出路径
【发布时间】:2011-08-18 17:19:20
【问题描述】:

在我的 VS 解决方案的主项目中,我有一个 Resources 文件夹,其中包含一些必需的外部工具。在构建和发布解决方案时,我得到一个 .\Resources* ,其中包含所有必需的文件。 到目前为止一切顺利。

但是我必须将一些文件移动到父目录。 我的第一次尝试是使用 Post Build Events。它可以工作并且确实将它们移动到正确的文件夹。 尽管如此,在发布输出中,它们仍然出现在 Resources 文件夹中,我需要它们在父文件夹中:/

有没有办法在 Visual Studio 中设置资源的目标输出路径?

【问题讨论】:

  • 为什么不把它们放在父文件夹中,如果那是它们所属的地方?
  • 主应用程序使用了几个.exe文件(通过新进程创建+启动),我不希望它们与代码混合..
  • 在问题的另一边,如果我改变他们的路径,每个使用它的用户都必须正确设置它的路径,现在这不是一个选项。这就是为什么我必须发布它们在根文件夹中:/

标签: visual-studio resources


【解决方案1】:

我曾经遇到过类似的情况。我发现在 Visual Studio 中自定义输出路径等变得比我想要的更麻烦。

我最终让 Visual Studio 自己处理文件/项目结构,并编写了一个构建后脚本,将所需的所有内容复制到最终的“可发布”目录中。

然后,我将 Visual Studio 中的执行目标设置为新位置,这样我就可以正常运行/调试,但使用按我需要的方式组织的新文件夹。小心,我认为这是一个 user 项目设置;所以其他开发人员也需要在他们的机器上执行此操作,如果他们愿意的话。

我确实记得更改了一些输出路径等以使构建后脚本更简单。但是,当您向解决方案添加新项目时,更改此类内容可能会导致烦恼;您可能需要将它们配置为匹配。这都是一个权衡:)

【讨论】:

    【解决方案2】:

    两个想法:

    • 也许您可以将您的资源移动到另一个项目 - 一个仅用于资源的项目 - 然后将它们的 Build Action 设置为 Content 并将 Copy To Output 设置为 true。然后引用这个新项目并构建解决方案。 (这可能无法如您所愿,只是一个想法)。
    • 为什么不让您的资源嵌入资源。将它们全部保存在Resources\ 目录中并以编程方式访问它们?

    【讨论】:

      【解决方案3】:

      经过一些研究和实验,我解决了我的问题。 不过,这就是我在这个过程中学到的东西。

      第一次尝试是将文件添加到项目根目录并将其标记为资源。发布后它起作用了。但是将这些文件放在项目根目录中就很糟糕了。

      由于我需要一些在另一个 VS 解决方案中编译的 *.exe 文件,因此将它们添加为项目参考。试一试,它通过了“发布”测试。但仍然......不是最好的方法。

      之后,通过一些脚本和构建后事件,我将所需的文件复制到了正确的文件夹中。作品..但发布后,它们不会出现在包中。

      不过,魔法工具还是有可能的:

      http://msdn.microsoft.com/en-us/library/acz3y3te.aspx

      这导致了一些有希望的实验,但它们最终帮助我意识到 MS ClickOnce 的局限性,因此我决定尝试其他工具。

      这是一个好的开始: What alternatives are there to ClickOnce?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-08
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多