C# Nancy自宿主和静态内容文件

C# Nancy自宿主和静态内容文件,c#,console-application,nancy,self-hosting,C#,Console Application,Nancy,Self Hosting,我的想法是对的,如果你创建了一个自托管的nancy控制台应用程序,并且想要提供html、javascript和css文件,那么你必须检查所有这些文件,并将它们全部标记为复制到输出目录 public class HomeModule : NancyModule { public HomeModule() { Get["/"] = v => View["index.html"]; } } 如果index.html文件位于项目文件夹中,并且未在其属性

我的想法是对的,如果你创建了一个自托管的nancy控制台应用程序,并且想要提供html、javascript和css文件,那么你必须检查所有这些文件,并将它们全部标记为复制到输出目录

public class HomeModule : NancyModule
{
    public HomeModule()
    {

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

如果index.html文件位于项目文件夹中,并且未在其属性上标记为“复制到输出”,则找不到该文件。

编辑:我已更正,我误解了这个问题

是的,您需要将所有静态内容设置为复制,但是,当我设置项目的“我现在无法复制粘贴示例”时,我只需在项目文件中添加生成事件,或者为CI/部署设置生成任务

不,您不需要单独标记每个文件

您可以标记整个目录

public class HomeModule : NancyModule
{
    public HomeModule()
    {

        Get["/"] = v =>  View["index.html"];
    }
}
或者,如果您使用的是OWIN,则可以使用静态内容中间件

比如:

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

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

编辑:我被纠正了,我误解了这个问题

是的,您需要将所有静态内容设置为复制,但是,当我设置项目的“我现在无法复制粘贴示例”时,我只需在项目文件中添加生成事件,或者为CI/部署设置生成任务

不,您不需要单独标记每个文件

您可以标记整个目录

public class HomeModule : NancyModule
{
    public HomeModule()
    {

        Get["/"] = v =>  View["index.html"];
    }
}
或者,如果您使用的是OWIN,则可以使用静态内容中间件

比如:

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

        app.UseFileServer(fileSystem);
        app.UseNancy();
    }
}
您可以使用Visual studio生成事件并按如下方式添加xcopy命令:

xcopy /E /Y "$(ProjectDir)\Views" "$(ProjectDir)\bin\$(ConfigurationName)\Views\*"
xcopy /E /Y "$(ProjectDir)\Content" "$(ProjectDir)\bin\$(ConfigurationName)\Content\*"
构建项目时,xcopy将被执行,文件将复制到输出目录中,这样您的selfhost exe就可以看到这些文件

您可以使用Visual studio生成事件并按如下方式添加xcopy命令:

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

构建项目时,xcopy将被执行,文件将复制到输出目录中,以便您的selfhost exe可以看到这些文件。

我也遇到了同样的问题,我找到了一个其他人可能会觉得有用的解决方法:

我没有在每个构建中将文件复制到输出目录,而是在其中创建了一个新的目录,目标是原始的静态文件目录

这允许在VisualStudio中实时编辑静态内容,而无需重建以将编辑的文件复制到输出目录

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" 

我也有同样的问题,我找到了一个其他人可能会觉得有用的解决方法:

我没有在每个构建中将文件复制到输出目录,而是在其中创建了一个新的目录,目标是原始的静态文件目录

这允许在VisualStudio中实时编辑静态内容,而无需重建以将编辑的文件复制到输出目录

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" 

不,你错了。@Phill,是的,我错了!后期生成事件可以执行xcopy或类似操作。。。看这里:不,你错了。@Phill,是的,我错了!后期生成事件可以执行xcopy或类似操作。。。看这里:我相信你误解了OP的要求。他们制作了一个非web项目,其中可执行文件由VS在/bin文件夹中创建并运行。这意味着,与web项目中的内容文件不同,任何内容文件也必须复制到/bin文件夹中,方法是显式更改要复制到输出目录的每个文件的属性。OP询问是否可以以某种方式自动更改此属性。哦,我坚持更正。在这种情况下,我只是在项目文件或CI上的生成任务中作为生成事件的一部分进行复制。感谢您提供的信息-因此,如果我想使用生成后事件,那么保留文件结构的开关是什么/t保留文件结构但不复制文件我想保留目录结构并复制文件?我相信您已经误解了OP的要求。他们制作了一个非web项目,其中可执行文件由VS在/bin文件夹中创建并运行。这意味着,与web项目中的内容文件不同,任何内容文件也必须复制到/bin文件夹中,方法是显式更改要复制到输出目录的每个文件的属性。OP询问是否可以以某种方式自动更改此属性。哦,我坚持更正。在这种情况下,我只是在项目文件或CI上的生成任务中作为生成事件的一部分进行复制。感谢您提供的信息-因此,如果我想使用生成后事件,那么保留文件结构的开关是什么/t保留文件结构但不复制文件我想保留目录结构并复制文件?