![](/img/trans.png)
[英]How do I correct the “DirectoryNotFoundException” in asp.net?
[英]How do I reproduce a DirectoryNotFoundException?
我在使用Phantom進行遞歸刪除和復制時遇到問題。 我已經解決了實際問題,很容易檢查以下異常,任何人都可以輕松做到,但是您能告訴我如何從Visual Studio重現該問題嗎?
System.IO.DirectoryNotFoundException:找不到路徑“ build / webui \\ Views / Web.config”的一部分。 d:\\ OpenSource中Phantom.Core.WrappedFileInfo.CopyToDirectory(String path)處System.IO.File.InternalCopy(String sourceFileName,String destFileName,Boolean overwrite)處System.IO .__ Error.WinIOError(Int32 errorCode,String mayFullPath) \\ Build \\ Phantom2 \\ Phantom \\ src \\ Phantom.Core \\ WrappedFileInfo.cs:第75行在構建。$$ Execute $ closure $ 23 $ closure $ 25.Invoke(WrappedFileSystemInfo文件)在Phantom.Core.Builtins.UtilityFunctions.ForEach [T] (IEnumerable
1 source, Action
1 action)in d:\\ OpenSource \\ Build \\ Phantom2 \\ Phantom \\ src \\ Phantom.Core \\ Builtins \\ UtilityFunctions.cs:build的第34行。$ Execute $ closure $ 23.Invoke()
在d中的Phantom.Core.Target.Execute()中:d中的Phantom.Core.ScriptModel.ExecuteTargets(String [] targetNames)在d:\\ OpenSource \\ Build \\ Phantom2 \\ Phantom \\ src \\ Phantom.Core \\ Target.cs:行81 :\\ OpenSource \\ Build \\ Phantom2 \\ Phantom \\ src \\ Phantom.Core \\ ScriptModel.cs:d:\\ OpenSource \\ Build \\ Phantom2 \\ Phantom \\ src \\ Phantom \\中Phantom.Program.Execute(String [] args)處的第73行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);
}
}
可以使該特定問題消失,這很好,我的意思是弄清楚它只用了幾分鍾,但是嘗試重現問題或創建失敗的測試已經花費了幾個小時,我想知道為什么它不能完成或學習如何:)
編輯:這樣做的原因是非常愚蠢的,但這里。 在這種情況下,基本目錄將是“ Views”,PathWithourBaseDirectory將等於“ Home / About.aspx”之類的東西,該死的東西在cmd中不起作用,但在Visual Studio中確實起作用。 接下來,我知道我也無法使其在Visual Studio中運行,因此我應用了此修復程序,所有測試均變為綠色。 我還是不知道為什么
我想知道為什么
好吧-有幾個問題:
假設路徑為“ C:\\ Foo \\ Bar.txt”(其中Bar.txt是文本文件)。
現在,您正在調用Directory.CreateDirectory(path)。
您嘗試創建目錄“ C:\\ Foo \\ Bar.txt”。 但是,“已經”已經是一個文件。
然后,在創建文件時,將此路徑與文件名結合在一起-結果可能是“ C:\\ Foo \\ Bar.txt \\ Bar.txt”。 但是,這不能成功。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.