我如何正确地将文件目录包含到我的项目中,以便在部署时可以在代码中正确地打包和引用它们?

How do I correctly include a file directory into my project such that they can be packaged and referenced correctly in code when deployed?

我有一个目录,其中包含各种 csv、xml 和项目所依赖的其他项目相关文件。它们分为子文件夹。

我需要在部署应用程序时将它们与应用程序打包在一起,而且我还需要能够在调试和部署 Web 服务时引用它们的绝对位置。

到目前为止,我已经将文件夹复制到项目目录中,并且可以在解决方案资源管理器中看到它。

我使用以下行(基于我读过的各种不同的 SO 答案)来引用它:

string resourcePath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"GrammarDictResources");

这会在调试文件夹中的一系列嵌套文件中搜索它,但没有找到。 首先,这是引用项目文件夹的正确方法吗?

我在其他帖子中看到需要在每个单独文件的属性中设置以下设置:

如果这是我需要做的一部分,有没有办法在批处理操作中执行此操作,因为我的文件目录有超过 100 个文件,我会显然不必为所有这些手动设置。

到目前为止,我已经尝试了不同的解决方案,但都没有成功。

提前致谢。

可以通过编辑您的 .csproj 来一劳永逸地进行批处理。如果你编辑它,你应该看到这样的东西:

<ItemGroup>
  <Content Update="GrammarDictResources/SubFolder/YourFile.csv">
    <CopyToOutputDirectory>Always</CopyToOutputDirectory>
  </Content>
</ItemGroup>

每个文件有一个 <Content> 标签。

但是,所有这些都可以用一个代替,因为可以使用通配符:

<ItemGroup>
  <Content Update="GrammarDictResources\**\*.*" CopyToOutputDirectory="Always" />
</ItemGroup>

请注意,如果需要,您也可以使用 CopyToPublishDirectory