asp.net-mvc - 在 ASP.NET MVC 项目和 Cordova 项目之间共享代码

标签 asp.net-mvc visual-studio cordova minify

我正在通过 Visual Studio 的 Cordova 模板以及同一 Visual Studio 解决方案中的 ASP.NET MVC Web 应用程序开发基于 Cordova 的移动应用程序。我希望能够在两个项目之间共享尽可能多的 HTML。我遇到的一个问题是在 ASP.NET 中发生的捆绑和缩小,而这在 Cordova 项目中不可用。我有什么想法可以在两个项目中支持 Visual Studio 中的缩小,这将允许我共享尽可能多的代码?

最佳答案

Cordova 的项目文件 .jsproj是一个由 MSBuild 处理的普通构建文件,因此您可以通过添加自定义目标来应用您需要的任何处理逻辑。您甚至可以通过安装相应的 VS 扩展来运行来自 Node.js 世界的工具,如 Grunt 或 Gulp。

至于在ASP.NET和Cordova项目之间共享代码,我建议在你的.jsproj中添加链接,如下:

<PropertyGroup>
  <AspNetProject>C:\YourAspNetProject</AspNetProject>
</PropertyGroup>
<ItemGroup>
  <Content Include="$(AspNetProject)\Views\**\*.cshtml">
    <Link>views\%(RecursiveDir)%(FileName).html</Link>
  </Content>
  <!-- add other links here -->
</ItemGroup>

这样 VS 在解决方案资源管理器中显示链接的文件,并允许您像在本地一样编辑它们。

不幸的是,当前版本的 VS Tools for Apache Cordova CTP3 不支持链接项,因此必须在您的 .jsproj 中进行另一项更改:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CordovaTools\vs-mda-targets\Microsoft.MDA.targets" />
<PropertyGroup>
  <BuildDependsOn>PreBuild;$(BuildDependsOn)</BuildDependsOn>
</PropertyGroup>
<Target Name="PreBuild">
  <ItemGroup>
    <LinkedFiles Include="@(Content)" Condition="'%(Content.Link)' != ''" />
    <!-- add other links here -->
  </ItemGroup>
  <Copy SourceFiles="%(LinkedFiles.Identity)" DestinationFiles="%(LinkedFiles.Link)" />
</Target>
PreBuild任务在任何 Build 之前被调用子任务并将链接的文件复制到您的 Cordova 项目。其余的构建过程照常运行。

关于asp.net-mvc - 在 ASP.NET MVC 项目和 Cordova 项目之间共享代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26348920/

相关文章:

c# - 使用静态 MemcachedClient 的问题

javascript - Android 设备上的 PhoneGap 蓝牙插件

mysql - 我可以使用导航属性加载一个包含表的整个数据库吗?

visual-studio - 当nuget包更新可用时如何获得通知

c# - VS 2013/2015 代码分析——抑制来自第三方库的警告

visual-studio - 使用提交注释自动关闭 Redmine 任务

java - Eclipse至Android Studio-Gradle问题

android - Cordova 在设置 Android 项目时找不到 Android 19 SDK

asp.net-mvc - MVC 中的模型

jquery - 在 MVC 中使用 BundleTable.EnableOptimizations 时读取 Js 文件中的资源文件时出现问题