如何在源代码管理中包括文件并在以后进行编辑

时间:2019-03-28 13:18:49

标签: c# tfs azure-devops

我正在使用C#创建游戏,并尝试将CS​​V合并到排行榜中,以便在玩家完成游戏时将先前的分数解析到排行榜中。

这是与分数相关的存储数据

如果这是一个单独的项目,我会将csv存储在bin> Debug文件夹中,并将文件路径传递给StreamReader。虽然,这是一个使用Azure Devops / TFS作为源代码控制的小组项目,所以我不太确定哪种方法最好。

我曾尝试将CS​​V存储在项目的资源中,但是我没有意识到这会将文件嵌入项目中,只允许从文件中读取。

当前CSV的读取方式为:

var file = Properties.Resources.highscores;
char[] splitter = "\r\n".ToCharArray();
string[] scoresCsv = Properties.Resources.highscores.Split(splitter);

foreach (string score in scoresCsv)
{
    if(!String.IsNullOrEmpty(score))
    {
        var values = score.Split(',');
        highScores.Add(new HighScore(values[0], Convert.ToInt32(values[1]), Convert.ToDateTime(values[2])));
    }
}
this.highScores = highScores.OrderByDescending(x => x.Score).ToList();

2 个答案:

答案 0 :(得分:0)

选择“团队资源管理器”窗口,然后转到“源代码管理资源管理器”

在这里您将看到项目的全局视图。

您可以将文件添加到项目中位于实际源之外的任何文件夹中。如果需要,可以将bin文件夹添加到源代码管理中,并将该文件保留在bin文件夹中。

无论您将文件放在哪里,都只需要从项目中知道文件的位置即可,就可以映射到该文件并在运行时对其进行编辑。

另一个选择是在游戏的C:\ ProgramData文件夹中创建一个文件夹,并且在排行榜运行游戏时,您可以将排行榜直接写入其C驱动器。人们可以修改排行榜,但是显然,该游戏是为了学习编码目的,而且通常不会将排行榜存储在服务器上的客户端上。

答案 1 :(得分:0)

这假设未共享高分数据,而是将其存储在本地。不需要将文件添加到源代码管理中。

public class ScoreFileHandler
{
    private static string appPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "YourAppName");
    private static string scoreFileName = "highscores.txt";
    private static string filePath = Path.Combine(appPath, scoreFileName);

    public string ReadFile()
    {
        if (!Directory.Exists(appPath))
        {
            Directory.CreateDirectory(appPath);
        }

        if (File.Exists(filePath))
        {
            return File.ReadAllText(filePath);
        }

        return string.Empty; // TODO - caller needs to handle this
    }

    public void WriteFile(string csvScoreData)
    {
        if (!Directory.Exists(appPath))
        {
            Directory.CreateDirectory(appPath);
        }

        File.WriteAllText(filePath, csvScoreData);
    }
}