更新:我解决了我的问题,取代了
var directoryName = Path.GetDirectoryName(typeof (Bootstrapper).Assembly.CodeBase);
用
var directoryName = AppDomain.CurrentDomain.BaseDirectory;
现在测试工作正常。无论如何,我打开问题以防万一有人可以使原始代码工作(可能解释为什么Bootstraper比我的解决方案更好:)所以我可以理解为什么在这里使用
原始问题
我只是在C#中与Nancyfx合作,但我刚刚在c#上重新开始工作,可能我错过了很多与dot.net和c#相关的概念,会研究这些周末
尝试为nancy模块创建一些测试(我使用Nancy和NancyFx的帮助测试类)我遇到的问题是那些测试必须使用我为其编写测试的项目的路径(例如我在TestProject中编写了这些测试,我正在测试SelfHostNancyProject)。 所以我需要明确地解决这个问题(实际上我手动复制了TestProject的Views目录中项目SelfHostNancyProject的Views目录)。 但是,即使使用自动构建后命令复制这些目录/文件也不是最好的方法。
我发现了这个解决方案 https://github.com/NancyFx/Nancy/wiki/Nancy-Testing-View-Location 但是在我的代码中复制TestingRootPathProvider类的代码我有错误
无法找到类型或命名空间Bootstrapper
public class TestingRootPathProvider : IRootPathProvider
{
private static readonly string RootPath;
static TestingRootPathProvider()
{
var directoryName = Path.GetDirectoryName(typeof Bootstrapper).Assembly.CodeBase);
if (directoryName != null)
{
var assemblyPath = directoryName.Replace(@"file:\", string.Empty);
RootPath = Path.Combine(assemblyPath, "..", "..", "..", "Escape.Web");
}
}
public string GetRootPath()
{
return RootPath;
}
}
但是,谷歌我无法找到解决方案。我看到这似乎与app inizialization有关 What are Bootstrappers/Bootstrapping in C#
但无论如何我不明白我必须做哪些导入(如果有的话)才能解决问题,或者可能是我缺少的东西。
答案 0 :(得分:1)
我解决了我的问题,取代了
var directoryName = Path.GetDirectoryName(typeof (Bootstrapper).Assembly.CodeBase);
使用
var directoryName = AppDomain.CurrentDomain.BaseDirectory;