C# Nancy自宿主和静态内容文件
我的想法是对的,如果你创建了一个自托管的nancy控制台应用程序,并且想要提供html、javascript和css文件,那么你必须检查所有这些文件,并将它们全部标记为复制到输出目录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文件位于项目文件夹中,并且未在其属性
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保留文件结构但不复制文件我想保留目录结构并复制文件?