我在使用Phantom时遇到问题,请手动删除和复制。我已经解决了实际的问题,很容易检查下面的例外,任何人都可以轻松地这样做但你能告诉我如何从visual studio重现问题吗?
System.IO.DirectoryNotFoundException: 找不到路径的一部分 '构建/ WebUI中的\ Views / Web.config中'。在 System.IO .__ Error.WinIOError(的Int32 errorCode,String maybeFullPath)at System.IO.File.InternalCopy(字符串 sourceFileName,String destFileName, 布尔覆盖) Phantom.Core.WrappedFileInfo.CopyToDirectory(字符串 路径) d:\开源\建立\ Phantom2 \幻影的\ src \ Phantom.Core \ WrappedFileInfo.cs:行 75点 建立。$$执行$关闭$ $ 23 $封25.Invoke(WrappedFileSystemInfo 文件)at Phantom.Core.Builtins.UtilityFunctions.ForEach [T](IEnumerable
1 source, Action
1动作)in d:\开源\建立\ Phantom2 \幻影的\ src \ Phantom.Core \内建命令\ UtilityFunctions.cs:行 34点 建立。$ $执行关闭$ 23.Invoke()
在Phantom.Core.Target.Execute()中 d:\开源\建立\ Phantom2 \幻影的\ src \ Phantom.Core \ Target.cs:行 81点 Phantom.Core.ScriptModel.ExecuteTargets(字符串[] targetNames) d:\开源\建立\ Phantom2 \幻影的\ src \ Phantom.Core \ ScriptModel.cs:行 73点 Phantom.Program.Execute(String [] args) 在 d:\开源\建立\ Phantom2 \幻影的\ src \幻影\的Program.cs:行 57
问题是幻像是从.bat / .cmd文件启动而构建文件是作为参数发送的,这在我的Windows 7 x64机器上以某种方式失败但是在Visual Studio 2008中完全相同的工作完全如此即使我复制Views文件夹,我也可以递归。原始代码(从命令行失败):
public override void CopyToDirectory(string path) {
if (!Directory.Exists(path)) {
Directory.CreateDirectory(path);
}
if (Flatten) {
var combinedPath = Path.Combine(path, Name);
File.Copy(FullName, combinedPath, true);
}
else {
var combinedPath = Path.Combine(path, PathWithoutBaseDirectory);
File.Copy(FullName, combinedPath, true);
}
}
将上述内容更改为:
public override void CopyToDirectory(string path) {
if (!Directory.Exists(path)) {
Directory.CreateDirectory(path);
}
if (Flatten) {
var combinedPath = Path.Combine(path, Name);
File.Copy(FullName, combinedPath, true);
}
else {
var combinedPath = Path.Combine(path, PathWithoutBaseDirectory);
var newPath = Path.GetDirectoryName(combinedPath);
if (!Directory.Exists(newPath)) {
Directory.CreateDirectory(newPath);
}
File.Copy(FullName, combinedPath, true);
}
}
让这个具体的问题消失了,这很好我的意思是只计算几分钟,但试图重现问题或创建一个失败的测试现在花了几个小时,我想知道它为什么无法完成或学习如何:)
编辑:这样做的原因非常愚蠢但是这里有。在这种情况下,基本目录将是“视图”,PathWithourBaseDirectory将等于“Home / About.aspx”这样的东西在cmd中不起作用,但它确实在Visual Studio中工作。接下来我知道我不能让它在Visual Studio中运行,所以我应用了我的修复程序,所有测试都变为绿色。我还是不知道为什么......
答案 0 :(得分:0)
我想知道为什么
嗯 - 有几个问题:
让我们说路径是“C:\ Foo \ Bar.txt”(其中Bar.txt是文本文件)。
现在您正在调用Directory.CreateDirectory(路径)。
您尝试创建目录“C:\ Foo \ Bar.txt”。但是,“是”已经是一个档案。
然后,在创建文件时,将此路径与文件名组合在一起 - 结果可能是“C:\ Foo \ Bar.txt \ Bar.txt”。但是,这不能成功。