2014-07-07 55 views
2

我的想法是,如果你創建自己的主機南希控制檯應用程序,並想提供HTML,JavaScript和CSS文件,你必須通過所有這些文件(可能是一個相當很少),並將它們全部標記爲輸出目錄。南希自我主機和靜態內容文件

public class HomeModule : NancyModule 
{ 
    public HomeModule() 
    { 

     Get["/"] = v => View["index.html"]; 
    } 
} 

如果index.html文件位於項目文件夾中,並且未標記爲複製以輸出其屬性,則不會找到此項。

+0

是的。你是對的。 – spender

+0

爲什麼倒票? – Paul

+0

不錯,你錯了。 – Phill

回答

2

編輯:我糾正了,我誤解了這個問題。

是的,你需要設置所有的靜態內容來複制,但是當我設置我的項目(我目前無法複製粘貼示例)時,我只是在項目文件中添加一個生成事件,或者我爲CI /部署設置構建任務。


不,你不需要單獨標記每個文件。

https://github.com/NancyFx/Nancy/wiki/Managing-static-content

您可以標記整個目錄。

或者,如果您使用OWIN,則可以使用靜態內容中間件。

喜歡的東西:

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     var fileSystem = new FileServerOptions 
     { 
      EnableDirectoryBrowsing = false, 
      FileSystem = new PhysicalFileSystem("....") 
     }; 

     app.UseFileServer(fileSystem); 
     app.UseNancy(); 
    } 
} 
+0

我相信你誤解了OP的要求。他們已經創建了一個(非web)項目,其中可執行文件由VS在'/ bin'文件夾中創建並運行。這意味着(不像在web項目中),任何內容文件也必須通過將這些文件中的每一個的屬性明確地改變爲「複製到輸出目錄」而被複制到'/ bin'文件夾中。 OP在詢問這種財產變化是否可以以某種方式自動化。 – spender

+0

哦,我站好了。在這種情況下,我只是複製爲項目文件中的構建事件的一部分或CI上的構建任務。 – Phill

+0

感謝您的信息 - 所以如果我想使用後構建事件什麼是保存文件結構的開關/ t保留文件結構但不復制文件我想保留目錄結構和複製文件? – Paul

0

Visual studio build events

您可以使用Visual Studio生成事件,並添加xcopy命令是這樣的:

xcopy /E /Y "$(ProjectDir)\Views" "$(ProjectDir)\bin\$(ConfigurationName)\Views\*" 
xcopy /E /Y "$(ProjectDir)\Content" "$(ProjectDir)\bin\$(ConfigurationName)\Content\*" 

當項目建成XCOPY被執行和文件複製在輸出目錄中,所以你的selfhost exe可以看到這些文件。

1

我有同樣的問題,我找到了一個解決辦法,其他人可能會發現有用:

,而不要照搬每個構建文件的輸出目錄,我在它創建了一個directory junction,針對原有的靜態文件目錄。

這使得視覺工作室靜態內容的實時編輯(無需以編輯的文件複製到輸出目錄重建)

例如(構建後命令行):

if not exist "$(TargetDir)Web" md "$(TargetDir)Web" 
if not exist "$(TargetDir)Web\Content" mklink /j "$(TargetDir)Web\Content" "$(ProjectDir)Content" 
if not exist "$(TargetDir)Web\Scripts" mklink /j "$(TargetDir)Web\Scripts" "$(ProjectDir)Scripts" 
if not exist "$(TargetDir)Web\Fonts" mklink /j "$(TargetDir)Web\Fonts" "$(ProjectDir)Fonts" 
if not exist "$(TargetDir)Web\Static" mklink /j "$(TargetDir)Web\Static" "$(ProjectDir)Web\Static"