C#C
C#2y ago
15 replies
Jasonnn

Relative paths with assemblies calling each other

I have
parent_dir/HaploDeep/models/some_files.onnx
,
parent_dir/HaploDeep/HaploDeep.cs
and
parent_dir/HaploDeep.Tests/Tests.cs


In
HaploDeep.cs
I want to open
models/files.onnx
so I do
        private readonly string[] _modelPaths =
        [
            @"models\model_1.onnx",
            @"models\model_2.onnx",
            @"models\model_3.onnx",
            @"models\model_4.onnx",
            @"models\model_5.onnx"
        ];
        // Load them by using the array _modelPaths

but when I call the unit tests it says
System.IO.IOException: Model file models\model_1.onnx
does not exists.


I tried to do that:
            string basePath = AppDomain.CurrentDomain.BaseDirectory;
            _modelPaths = [
                Path.Combine(basePath, @"models\model_1.onnx"),
                Path.Combine(basePath, @"models\model_2.onnx"),
                Path.Combine(basePath, @"models\model_3.onnx"),
                Path.Combine(basePath, @"models\model_4.onnx"),
                Path.Combine(basePath, @"models\model_5.onnx")
            ];
            // Load them by using the array _modelPaths

in
HaploDeep.cs


But then when running my unit tests I have the same, it thinks the relative paths are relative to
HaploDeep.Tests
path:
System.IO.IOException: Model file C:\...\HaploDeep.Tests\bin\Debug\net8.0\models\model_1.onnx does not exi...


I've been using Python for years and if a path was relative in library 1, when library 2 would use library 1, the paths would be relative to library 1; not to library 2. And here I'm really confused.
Would really appreciate some help, I've been banging my head on this for the past hour
Was this page helpful?
Relative paths with assemblies calling each other - C#