Service Fabric应用程序的根目录

时间:2016-09-27 15:25:13

标签: azure-service-fabric

在我的代码中,我失败了

if (!File.Exists(_configurationFileName)) {...}

在即时窗口中,我拨打了Directory.GetCurrentDirectory()的电话,它指向了“工作”文件夹,而不是我的“代码”文件夹本来应该的。

Directory.GetCurrentDirectory()
"C:\\SfDevCluster\\Data\\_App\\_Node_0\\My.Application.Type_App2\\work"

因此,我的配置文件位于可执行文件旁边,当然无法找到。

现在我想知道解决方案是什么 由于我还想继续运行控制台应用程序,我不想实现任何“if service fabric hosting,然后更改当前目录,......”解决方法。

有什么建议吗?我的.exe.config文件怎么样(如果有的话,怎么会找到它们?)

Service Fabric将当前目录设置为“工作”的原因是什么?这是某种安全机制吗?

4 个答案:

答案 0 :(得分:11)

这就是我刚刚将服务清单更改为指向代码的方式

<EntryPoint>
  <ExeHost>
    <Program>configui.exe</Program>
    <WorkingFolder>CodePackage</WorkingFolder>
  </ExeHost>
</EntryPoint>

答案 1 :(得分:0)

您可以选择构建操作作为&#39;内容&#39;并选择“如果更新的话”复制&#39;在属性中,以便将其复制到输出文件夹。

答案 2 :(得分:0)

您可以执行一些简单的反射并获取执行程序集所在的文件夹,然后在该位置引用该文件。我成功完成了一个我需要的辅助文件,它被部署到与我的可执行文件相同的文件夹中。

string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
string filePath = Path.Combine(Path.GetDirectoryName(exePath), "myfilename.txt");

答案 3 :(得分:0)

将“应用程序调试模式”设置为“保留应用程序”解决了我遇到的类似问题,我的文件未被复制到本地服务结构的最终部署区域。

它已被设置为“刷新应用程序”,当我输入时,它正在预览中。但是那个模式并没有复制我的wwwroot文件夹,所以我的视图引擎(在这种情况下是Nancy)没有找到我的观点。

右键单击您的服务结构项目&gt;属性&gt;申请&gt; <应用程序调试模式>保持申请