创建 .txt 文件 -- UWP Windows 10 app C#

Creating a .txt file -- UWP Windows 10 app C#

在我的测试应用程序中,我想输出一个 .txt 文件或 .etl 登录应用程序目录的用户。

例如,我想测试的一件事是相机的曝光。我希望结果以 .txt 文件或日志 .etl 文件的形式返回。

var exposureControl = _mediaCapture.VideoDeviceController.ExposureControl;
var outOfRangeValue = 0; // milliseconds
if (exposureControl.Min.Millieseconds > outOfRangeValue) {
    textFile.add("Passed: Minimum Exposure" + exposureControl.Min.Millieseconds.ToString() + " is greater than " +  outOfRangeValue.ToString()");
} else {
    textFile.add("Failed: Minimum Exposure " + exposureControl.Min.Millieseconds.ToString() + " should not be less than " + outOfRangeValue.ToString() + " bc app will crash");
}

然后在使用此 Windows 10 UWP 应用程序的设备上,创建的文本文件或 .etl 日志应包含以下字符串之一:

Passed: Minimum Exposure 0.06 is greater than 0

Failed: Minimum Exposure 0.06 should not be less than 0

因此我基本上需要一些东西来充当我的假 textFile.add("") cmd。

执行此操作的最佳方法是什么?

我研究过 MetroLog 和 Serilog 等记录器。以及 Microsoft 的日志记录示例:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/Logging. And another Microsoft example: https://code.msdn.microsoft.com/windowsapps/Logging-Sample-for-Windows-0b9dffd7#content. And this blogger's example as well: http://cryclops.com/2014/01/not-so-stupid-simple-logging-for-windows-store-apps-in-cvb/

我已尝试实施 MetroLog 和上面引用的两个 Microsoft 示例,但我无法确认文件的创建位置。无论如何,我什至不确定这些是否是我想要的结果的最佳方法。

MetroLog 生成的文件是在应用程序 appdata folder 中创建的,即 C:\Users\<username>\AppData\Local\Packages\<package family name of your app>\LocalState

在Windows资源管理器中展开路径时,注意C:\Users\<username>下的AppData文件夹是隐藏的,需要在资源管理器中勾选"Show hidden files"。

如果你想在没有 Logger 的情况下执行此操作,你可以执行以下操作:

private async Task AddTextToFile(String textToSave)
{
    var appFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    var file = await appFolder.CreateFileAsync("exposure.txt", 
        Windows.Storage.CreationCollisionOption.OpenIfExists);
    await Windows.Storage.FileIO.AppendTextAsync(file, textToSave + Environment.NewLine);
    // Look in Output Window of Visual Studio for path to file
    System.Diagnostics.Debug.WriteLine(String.Format("File is located at {0}", file.Path.ToString()));
}

private async void Button_Click(object sender, RoutedEventArgs e)
{
    await AddTextToFile(String.Format("MinimumExposure {0}", DateTime.Now.Millisecond.ToString()));
}

正如 kennyzx 所说,该文件位于隐藏目录中,因此我添加了一个 Debug.WriteLine() 命令,以便您可以在 Visual Studio 的输出中看到该文件的位置Window 当 运行 应用处于调试模式时。如果您使用此代码,您可能希望删除该行。