【问题标题】:How to specify the Directory structure of Release / Debug Folder after building it构建后如何指定发布/调试文件夹的目录结构
【发布时间】:2020-11-20 23:40:24
【问题描述】:

我有一个 c# WPF 应用程序。在构建我的项目后,我想有一个特定的文件夹,并且所有这些文件夹都包含在 Debug/Release 文件夹中的文件/子目录。现在在我的工作站上,我有以下结构/MyProject/Resources/NeededFolder

我希望在 Build 目录中有这个完全相同的文件夹,例如 /MyProject/bin/Release/NeededFolder。我需要 /NeededFolder 结构及其所有子目录和文件才能使我的应用程序正常工作。

解决这个问题的最佳解决方案/最佳实践方法是什么?

【问题讨论】:

    标签: c# visual-studio build


    【解决方案1】:

    在项目中包含它/它的子项(您可能必须单击“显示所有文件”按钮才能看到它)并将您想要输出的任何文件设置为具有 build action 的内容或无,具体取决于您的方式希望他们与应用程序相关联(请参阅here 和链接的问题 [there](of Content))并复制到始终或更新的输出

    【讨论】:

    • 这会在我的输出目录中产生完全相同的文件夹结构吗?因为我在这个文件夹中有大约 40 个文件,所以我需要手动单击。
    • 您可以选择多个文件(单击、按住 shift、单击)。您只需执行一次
    • 非常感谢!我尝试了 1 或 2 个文件,到目前为止它对我有用,非常感谢!
    • 不客气!如果您最终使用 SO 上给出的答案,则应单击左侧的灰色刻度线将其变为绿色。这可以让其他人知道什么对您有用,并且还会在仪表板上将问题标记为已回答。如果它或任何其他答案有用,您还可以单击向上箭头。任何数量的答案都可以向上箭头,但只能打勾
    【解决方案2】:

    根据您的描述,您希望文件夹及其所有子目录中的文件结构相同。

    您可以将 Copy Directory 方法放入您的代码中并定义两个字符串变量。一个是源地址,一个是目标地址。

    此方法会将源地址文件夹中的所有文件复制到目标地址的询价文件夹中。

    这样你就可以拥有相同的文件结构和文件夹中的所有文件。

    这是一个代码示例,您可以参考:

    private void Button_Click(object sender, RoutedEventArgs e)
            {
                string sourcePath = @"C:\Users\source\repos\MyProject";
                string destPath = @"C:\Users\Desktop\New folder";
                CopyDirectory(sourcePath,destPath);
            }
    
            public static void CopyDirectory(string srcPath, string destPath)
            {
                try
                {
                    DirectoryInfo dir = new DirectoryInfo(srcPath); FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();  
                    foreach (FileSystemInfo i in fileinfo)
                    {
                        if (i is DirectoryInfo)     
                        {
                            if (!Directory.Exists(destPath + "\\" + i.Name))
                            {
                                Directory.CreateDirectory(destPath + "\\" + i.Name);  
                            }
                            CopyDirectory(i.FullName, destPath + "\\" + i.Name);    
                        }
                        else
                        {
                            File.Copy(i.FullName, destPath + "\\" + i.Name, true); 
                        }
                    }
                }
                catch (Exception e)
                {
                    throw;
                }
            }
    

    结果:

    【讨论】:

    • 这也是我的第一个想法。但是因为我希望这发生在同一个计时器/在 Visual Studio 构建我的代码之后。这意味着我不能直接运行这个方法。
    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 2015-05-13
    • 2010-10-07
    • 2010-11-15
    • 2021-01-03
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多