我正在尝试从文件中编写相对路径,但我可以获得的唯一相对路径来自正在运行的应用程序文件。
这会导致问题,因为NCrunch从不同的目录运行测试,因此它无法完成所有测试,因为它无法找到与我的代码文件相关的文件。
重要的是,这是一个相对路径,因为有几个人在这个项目上工作,所以绝对路径不起作用。
有没有办法让路径相对于编写代码的.cs文件?
直到现在我一直在使用
private static readonly string MyDocumentsRoot = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
public static readonly string ApplicationRoot = MyDocumentsRoot + @"\Visual Studio 2012\Projects\";
但确实需要它更加相对
答案 0 :(得分:3)
答案 1 :(得分:1)
您可以尝试使用此代码 - 基于GetExecutingAssembly
方法
string path = System.Reflection.Assembly.GetExecutingAssembly().Location;
string directory= Path.GetDirectoryName( path );
或
string path = System.Reflection.Assembly.GetAssembly(YourClass).Location;
答案 2 :(得分:0)
您可以使用str=Directory.getdirectory
来提供应用程序的路径(直到Release或Debug(应用程序所在的位置)的文件夹)并将其保存在字符串中(该方法返回一个字符串)。这样做,您可以使用找到str.replace(str1,str2)
的{{1}}方法并将其替换为str1
。只是不要忘记字符串中的str2
是\
因为\\
是一个逃脱角色。如果你需要有关逃脱角色的帮助,请告诉我,这样我也可以帮助你。
答案 3 :(得分:0)
documentation显示路径相对于项目文件:
例如,您可以指定要包含的以下文件:
SpecialConfiguration\ImportantConfigFile.config ..\CustomBuild\**.* ..\..\TestResources\Spreadsheets\*.xls
这将包括单个文件(ImportantConfigFile.config),
..\CustomBuild
目录的全部内容,其所有子目录以及..\..\TestResources\Spreadsheets
目录中的所有.xls文件。必须相对于项目文件在磁盘上的路径指定所有文件路径。当NCrunch构建工作空间时,它将自动排列所有相关文件,使它们在工作空间中具有相同的相对路径他们在原来的位置做过。
答案 4 :(得分:0)
我通常会在我的可执行文件所在的位置放置一个旧样式的ini文件。这里我存储了应用程序所需的文件和文件夹的绝对路径。这也使我能够在生产环境(在cutomers网站上)以不同于我的开发环境的方式配置这些pathes。只有NCrunch运行组件的文件夹中的这个ini文件的副本才能解决问题。
我的ini文件实现从可执行文件所在的文件夹开始搜索所有文件夹,然后搜索根文件夹,直到找到ini文件。这使我能够使用通用的ini文件具有不同的可执行文件。例如。如果将{in}文件放在bin
文件夹中,Debug
和Release
版本将自动访问相同的ini文件。