Csharp/C#教程:Environment.CurrentDirectory vs System.IO.Directory.GetCurrentDirectory分享


Environment.CurrentDirectory vs System.IO.Directory.GetCurrentDirectory

我正在写一个.Net WinForms并且不断在DEBUG和RELEASE配置之间切换,并且我需要一些配置才能到达的文件。

我想要做的是将文件放在BIN文件夹中的公共目录中,这样看起来像这样:

MyProject/Bin/CommonFiles MyProject/Bin/Debug MyProject/Bin/Release 

我正在考虑使用以下内容来访问文件:

 System.IO.Directory.GetParent(System.IO.Directory.GetCurrentDirectory).FullName 

我的问题是,如果这是危险的,因为从我读过的内容, System.IO.Directory.GetCurrentDirectory可能会因用户在一个打开的文件对话框中选择一个新的当前目录而改变。

我是否应该使用以下内容:

 System.IO.Directory.GetParent(Environment.CurrentDirectory).FullName 

或者有一个更好的方式来到/Bin文件夹,所以我可以从那里或一个普遍接受的方式/位置移动存储程序通常需要达到的文件和更容易引用的方式(可能是工作的东西与任何类型的应用程序,而不仅仅是WinForms)?

您可以使用System.Reflection.Assembly.GetExecutingAssembly().Location获取应用程序的.exe位置。

 string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location; string exeDir = System.IO.Path.GetDirectoryName(exePath); DirectoryInfo binDir = System.IO.Directory.GetParent(exeDir); 

我会这样做:

  • 每次构建应用程序时,文件都将被复制到bin Debug CommonFiles或bin Release CommonFiles。 您可以将它们引用为:

     Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CommonFilesMyFile.Dat"); 
  • 虽然大多数答案确实看起来确实有效, 但经过相当多的调整后,Joe提供的解决方案被certificate是我情况的最佳解决方案。


    首先,我采用的最终解决方案:


    其次,我是如何学会这样做的:


    最后,我的解决方案:

    这将加载所有文件(包括所有子文件夹)并为我提供Build Action CommonFiles

    这将在构建时将CommonFiles构建操作中的文件复制到bin Debug / bin Release目录中。

    这就是我做到的……

    如果您认为我应该使用其他方式或其他方式,那么任何评论/想法都非常感激)….

    这个

    如果您有配置数据等,我会将它们存储在%Appdata%目录中。 将可能更改的文件放入安装目录并不是一个好主意,并且自Windows Vista以来是禁止的。 配置数据应存储在%Appdata%文件夹中,该文件夹是一个特殊文件夹。 不要将其路径硬编码到您的程序中 – 来自国外或32/64位窗口的用户将遇到严重问题。

    你可以在这里看到如何访问Appdata-Folder的好主意: 如何使用C#创建appdata文件夹

    以下代码来自https://msdn.microsoft.com/en-us/library/ms229654(v=vs.90).aspx

    上述就是C#学习教程:Environment.CurrentDirectory vs System.IO.Directory.GetCurrentDirectory分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

      String strAppDir = Path.GetDirectoryName( Assembly.GetExecutingAssembly().GetName().CodeBase); String strFullPathToMyFile = Path.Combine(strAppDir, "fileName.txt"); MessageBox.Show(String.Format("Path to the application is: '{0}'." + "Full path to the file in the application folder is: '{1}'", strAppDir, strFullPathToMyFile)); 

    本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

    ctvol管理联系方式QQ:251552304

    本文章地址:https://www.ctvol.com/cdevelopment/1024906.html

    (0)
    上一篇 2022年1月8日
    下一篇 2022年1月8日

    精彩推荐