在开发过程C#桌面应用程序时,数据文件夹的正确位置在哪里

在开发过程C#桌面应用程序时,数据文件夹的正确位置在哪里,c#,filesystems,desktop-application,desktop,appdata,C#,Filesystems,Desktop Application,Desktop,Appdata,我在C#中编写桌面应用程序。。。。此应用程序将为嵌入式EDD系统项目自动生成C/C++代码 因此,我必须将一些预写驱动程序复制到目标文件夹(生成文件的地方) 问题是我不知道在哪里可以正确地将sourc驱动程序放入 现在,我把源驱动程序放在项目foldr中,并在我的代码lik中引用它 // projectfolder\bin\Debug\netcoreapp3.1\file.exe string path = (Assembly.GetExecuti

我在C#中编写桌面应用程序。。。。此应用程序将为嵌入式EDD系统项目自动生成C/C++代码
因此,我必须将一些预写驱动程序复制到目标文件夹(生成文件的地方)

问题是我不知道在哪里可以正确地将sourc驱动程序放入

现在,我把源驱动程序放在项目foldr中,并在我的代码lik中引用它

            // projectfolder\bin\Debug\netcoreapp3.1\file.exe
            string path = (Assembly.GetExecutingAssembly().Location);
            DirectoryInfo exeDir = new DirectoryInfo(path);
            DirectoryInfo projectDir = exeDir.Parent.Parent.Parent.Parent;
            // now i can get the driver foler like this
            string DriverPath = Path.Combine(projectDir.fullName,"drivers");
我推测产品级别的文件夹将位于C:\ProgramData
但是对于开发位置应该在哪里?

Environment.CurrentDirectory+“\\Folder”
Environment.CurrentDirectory+“\\Folder”
中的c#dekstop应用程序中的默认位置,这主要是数据更改频率的问题。这将如何与NTFS变得普遍以来非常严格的写权限管理相互作用(虽然该规则早于NTFS,大部分是FAT,因此没有阻止我们的权限,但很少有程序员关心)

如果在程序更新/重新安装之外没有更改,您可以甚至应该将内容放入程序目录本身。如果它只是随着安装程序或更新程序而改变——不管怎样,它们的工作都需要管理权限——它就属于那里

如果更改发生得更频繁,那么程序文件夹将变得不可用,尤其是那些在运行时可能更改甚至需要在运行时更改的内容。在这种情况下,程序目录顶部应该包含一个模板文件。您可以将其复制到真实目录作为基线,以便开始使用。至于将这些可变数据放在何处,请查看。Userprofile-SpecialityAppData文件夹是要查看的重点。具体使用哪一个是您希望它如何与域控制器同步(漫游用户与非漫游用户)交互的问题。或者,如果你想让它以共同的方式结束


驱动程序听起来像是一种罕见的情况,程序目录完全适合这种情况。您可以选择将驱动程序作为并行应用程序安装。可以单独管理/更新的东西,这只是程序的一个要求。可以跨多个应用程序共享的内容。

这主要是数据更改频率的问题。这将如何与NTFS变得普遍以来非常严格的写权限管理相互作用(虽然该规则早于NTFS,大部分是FAT,因此没有阻止我们的权限,但很少有程序员关心)

如果在程序更新/重新安装之外没有更改,您可以甚至应该将内容放入程序目录本身。如果它只是随着安装程序或更新程序而改变——不管怎样,它们的工作都需要管理权限——它就属于那里

如果更改发生得更频繁,那么程序文件夹将变得不可用,尤其是那些在运行时可能更改甚至需要在运行时更改的内容。在这种情况下,程序目录顶部应该包含一个模板文件。您可以将其复制到真实目录作为基线,以便开始使用。至于将这些可变数据放在何处,请查看。Userprofile-SpecialityAppData文件夹是要查看的重点。具体使用哪一个是您希望它如何与域控制器同步(漫游用户与非漫游用户)交互的问题。或者,如果你想让它以共同的方式结束

驱动程序听起来像是一种罕见的情况,程序目录完全适合这种情况。您可以选择将驱动程序作为并行应用程序安装。可以单独管理/更新的东西,这只是程序的一个要求。可以在多个应用程序之间共享的内容。

在Windows中,应用程序可能会使用不同类型的数据,例如
  • 应用程序属性 应用程序设置使您能够动态存储应用程序信息。设置允许您在客户端计算机上存储应用程序代码中不应包含的信息

    Ex:位置、字体、样式、用户配置
    文件类型:App.Config(在设计时创建,默认情况下放入BIN文件夹)和User.Config(在运行时创建)
    项目>添加新项目>已安装>Visual C#项目>应用程序配置文件


  • 应用数据 包含安装的软件和UWP应用程序所需的所有数据、设置和用户文件。这些是用户不可知的数据

    Ex:图像、资源、精灵、数据模板、txt文件。它还可能包含App.Config文件

    文件位置:
    C:\ProgramData Environment.SpecialFolder.CommonAppData


  • 用户数据 包含用户特定的所有数据,例如他/她的应用程序特定设置

    Ex:任何类型的数据

    文件位置:
    C:\Users\[USERNAME]\AppData\Roaming
    Environment.SpecialFolder.AppData
    Environment.SpecialFolder.MyDocuments


我推测产品级的文件夹将位于C:\ProgramData中,但是 用于开发位置应在哪里

是的,它将转到ProgramData,但在开发过程中,如果有必要,您可以将它放在BIN文件夹或您选择的目录中

然而,当你将你的应用程序打包到MSI并捆绑在所有依赖文件和它们需要去的地方时,上面的大部分内容就会出现



编辑 根据评论中的OPs说明,.CPP文件将自动进入
BIN/Debug
文件夹