【问题标题】:Get path to File in executing project c#在执行项目c#中获取文件的路径
【发布时间】:2017-09-22 18:48:23
【问题描述】:

我在解决方案中有两个独立的项目。

第一个项目只是一个测试控制台项目。 第二个项目是Common Lib项目。

我在 Common Lib 项目中有一个静态类,其中包含一个需要读取文件的静态方法(用于 OpenNLP)。

var sentenceDetector = new EnglishMaximumEntropySentenceDetector("EnglishSD.nbin");

我将文件“EnglishSD.nbin”添加到Common Lib项目中。我将该文件的属性更改为“Content”和“始终复制”。它确实将该文件添加到 Common Lib 项目的 bin/debug 文件夹中。 编辑:“EnglishSD.nbin”位于文件夹 OpenNLP/EnglishSD.nbin

问题:当我运行 test console 项目时,该项目使用 Common lib 项目中的静态函数。它尝试在 Test Console 项目的 bin 文件夹中查找“EnglishSD.nbin”,而不是在 Common Lib 项目中查找。这会导致“FileNotFound”错误。

有什么方法可以获取文件的路径而不用担心从哪里调用它?

【问题讨论】:

    标签: c# .net-assembly filepath opennlp


    【解决方案1】:

    所以您的 Test Console 引用了您的 Common Lib?然后,当您构建 Test Console 时,CommonLib.dll 将被复制到 Test Console 项目文件夹中。我不知道是否有一种自动复制主项目引用的库的依赖项的方法...

    但是你可以设置它。使用 Test Console 项目的构建后事件并手动复制您所需的文件(我假设您的 Common Lib 项目文件夹是/Common Lib):
    copy "$(SolutionDir)Common Lib\EnglishSD.nbin" "$(TargetDir)"

    【讨论】:

      【解决方案2】:

      我的坏人。我实际上在文件夹中有“EnglishSD.nbin”。因此它在 TestConsole 项目的 bin/debug 中创建了一个文件夹,并将文件放在那里。

      所以我只需要将路径更改为 (FolderName)/EnglishSD.nbin。

       var sentenceDetector = new EnglishMaximumEntropySentenceDetector("OpenNLP/EnglishSD.nbin");
      

      【讨论】:

        猜你喜欢
        • 2017-04-16
        • 1970-01-01
        • 1970-01-01
        • 2015-12-19
        • 2015-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多