none
TryGetSolutionDirectoryInfo()?.FullName 取值为什么是null? RRS feed

  • 问题

  • 我遇到一个奇怪的问题。

    我的代码:

    var solutionDirectory = TryGetSolutionDirectoryInfo()?.FullName;
                if (solutionDirectory == null)
                {
                    MessageBox.Show("solutionDirectory is null");
                    return "";
                }

    当我的程序在vs2019用debug模式运行是,TryGetSolutionDirectoryInfo()?.FullName 取值正确,取到了我的程序的路径。

    但是当程序打包安装后,solutionDirectory 的值是null.

    请问如何解决?

    谢谢。

    2021年3月4日 14:44

全部回复

  • 你好,

    请问你的TryGetSolutionDirectoryInfo()的具体方法是什么?

    如果可以的话,请提供相关代码。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2021年3月5日 5:49
    版主
  • 我是用下面代码获取解决方案目录的。

    private static DirectoryInfo TryGetSolutionDirectoryInfo()
            {
                var directory = new DirectoryInfo(Directory.GetCurrentDirectory());
                //var directory2 = AppDomain.CurrentDomain.BaseDirectory;
                while (directory != null && !directory.GetFiles("*.sln").Any())
                    directory = directory.Parent;
                return directory;
            }

    我的程序是要访问当前项目外,解决方案中的一个目录。

    var solutionDirectory = TryGetSolutionDirectoryInfo()?.FullName;

    var aaaPath= solutionDirectory + @"\master.1153";

    我debug的时候,能正常,但是安装后不能正常使用。

    我明白是安装后没有.sln文件。

    请问我的程序应该怎么改,才能在安装和debug时,都能访问到aaaPath?

    谢谢。


    2021年3月5日 15:04
  • 你好,感谢您的反馈

    根据我的测试,我建议您解决方案中的目录放到您的项目中,这样有利于您更容易访问到正确的路径。

    首先您的需要在您的当前项目中创建文件夹,然后在文件夹中添加您需要的文件。

    然后你可以写下下面的代码:

     var path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Test\\abc.txt");
                Console.WriteLine(path);

    其次,点开你的属性页面查看下是否包含了相关文件。

    最后,发布这个项目,然后结果会输出对应的文件位置。

    Best Regards,

    Jack


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2021年3月8日 5:36
    版主