该类File
仅用于访问文件系统,而您的文件不再在系统中,因此需要更改此行。正如其他人用链接的答案暗示的那样,您需要获取资源的流,然后阅读它。可以调用以下方法来替换您的File.ReadAllText
方法调用。
private static string GetTextResourceFile(string resourceName)
{
var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
using (var sr = new StreamReader(stream))
{
return sr.ReadToEnd();
}
}
resourceName 将类似于MyNamespace.Myfile.txt
. 如果您在查找资源名称时遇到问题,那么GetManifestResourceNames
程序集上的方法将帮助您在调试时识别它。
另外值得注意的是,如果找不到资源,上述方法将引发异常。这应该在实际代码中处理,但我不想将上面的示例与标准错误处理代码混淆。
另请参阅How to read embedded resource text file for a different question with the same answer(不同之处在于它只询问流,但实际上流似乎是访问嵌入资源文件的唯一方法)。