【问题标题】:How do I correctly include a file directory into my project such that they can be packaged and referenced correctly in code when deployed?如何正确地将文件目录包含到我的项目中,以便在部署时可以在代码中正确打包和引用它们?
【发布时间】:2021-12-29 08:47:17
【问题描述】:

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

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

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

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

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

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

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

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

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

提前致谢。

【问题讨论】:

    标签: c# .net web-services


    【解决方案1】:

    可以通过编辑您的.csproj 一次性完成此操作。如果您对其进行编辑,您应该会看到如下内容:

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

    每个文件有一个&lt;Content&gt; 标签。

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

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

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

    【讨论】:

    • 谢谢! '为什么'你使用更新而不是'包含'?
    • 说实话,我不太确定,这只是我一直使用的,它按预期工作 :D documentation 并不太清楚区别。
    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多