创建 .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 当 运行 应用处于调试模式时。如果您使用此代码,您可能希望删除该行。
在我的测试应用程序中,我想输出一个 .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 当 运行 应用处于调试模式时。如果您使用此代码,您可能希望删除该行。