我有一个程序集,其中包含可以从IIS或控制台应用程序调用的函数.
因此,我选择了以下方法来获取路径:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
Run Code Online (Sandbox Code Playgroud)
显然,在从IIS调用函数的情况下,这将返回bin目录.
我打算在这条路径上创建一个txt文件.将文本文件放在bin目录中是一个坏主意吗?请提出有效的异议(如果有的话),这可能会导致问题.
Assembly.Location 可以返回令人惊讶的结果,例如,如果启用了卷影复制(例如,通过NUnit运行时),或者从不在本地文件系统上的位置运行(您可以通过HTTP运行.NET应用程序).
AppDomain.CurrentDomain.BaseDirectory是一个更安全的选项,因为它返回阴影复制之前的原始路径(虽然在HTTP部署的情况下,我认为它返回所在的目录ieexec.exe).
最安全的选择是在程序集中嵌入您需要的任何数据作为资源,并用于Assembly.GetManifestResourceStream在运行时访问它.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |