我在一个使用C#服务器后端的网站(专业)上工作,我们的前端是用Typescript编写的。因为我们使用的是Microsoft语言,所以使用Visual Studio开发是有意义的,因为我们的后端是C#,我们不需要ASP.NET,但因为我们使用的是Typescript,我们仍然想要到"建立"网站。我们的解决方案包含一堆C#项目,这些项目都构建并运行良好,还有一个网站项目名称" ExpressWeb"它包含构成前端的所有脚本,标记和样式。
我们使用gulp.js通过TaskRunner插件运行构建任务,所以基本上我们只是希望它在" After Build"之后运行gulp任务。钩。这样,当开发人员想要构建所有东西(我们都在后端和前端都工作)时,他们只使用Visual Studio的构建命令。
我们遇到的问题是,无论何时我们尝试构建网站,visual studio都会尝试将其抛弃在ASP.NET编译器上。由于部署机器只使用命令行构建工具,因此我们能够通过删除ProjectSection
中的所有内容来避免这种情况,因此它会看到无所事事,然后手动运行gulp任务。然而,为了让开发人员能够运行构建挂钩,我们仍然希望能够实现#34; Build"如果需要的话,一切都会建立起来。当您从visual studio构建时,它会生成一个新的.sln文件,这会导致ProjectSection
看起来像这样:
ProjectSection(WebsiteProperties) = preProject
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.5"
Debug.AspNetCompiler.VirtualPath = "/localhost_56894"
Debug.AspNetCompiler.PhysicalPath = "ExpressWeb\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_56894\"
Debug.AspNetCompiler.Updateable = "true"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/localhost_56894"
Release.AspNetCompiler.PhysicalPath = "ExpressWeb\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_56894\"
Release.AspNetCompiler.Updateable = "true"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
VWDPort = "56894"
SlnRelativePath = "ExpressWeb\"
EndProjectSection
什么工作看起来像这样:
ProjectSection(WebsiteProperties) = preProject
TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.5"
SlnRelativePath = "ExpressWeb\"
EndProjectSection
我是否可以通过某种方式在不使用ASP.NET的情况下构建网站,或者失败,有些方法可以阻止Visual Studio在解决方案文件中覆盖此特定项目的构建说明而不会使整个事情变得不可变?