我是否正确地认为,如果您创建一个自我主机南希控制台应用程序并想要提供html,javascript和css文件,您必须通过所有这些文件(可能是相当多的)并将它们全部标记为复制到输出目录。
public class HomeModule : NancyModule
{
public HomeModule()
{
Get["/"] = v => View["index.html"];
}
}
如果index.html文件位于项目文件夹中并且未在其属性上标记为copy to output,则无法找到。
答案 0 :(得分: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();
}
}
答案 1 :(得分:2)
我遇到了同样的问题,我找到了其他人可能会觉得有用的解决方法:
我没有将文件复制到每个构建的输出目录,而是在其中创建了一个directory junction,目标是原始的静态文件目录。
这允许在Visual Studio中实时编辑静态内容(无需重建以将编辑后的文件复制到输出目录)
e.g。 (构建后命令行):
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"
答案 2 :(得分:0)