繁体   English   中英

.NET(Visual Studio)在项目之间共享资产

[英].NET (Visual Studio) Share assets between projects

我正在使用Visual Studio。 在那里,我有一个包含多个web项目的解决方案(.net MVC 4)。 所有这些web项目都使用相同的javascript-libs。 目前我将库复制到每个项目中,但这不是最终的解决方案。 在所有项目之间共享这些库(一般资产)的最佳方法是什么? 只是链接他们? 或者是否可以创建一个项目并在所有项目中引用它?

更新

“链接”来自另一个项目的javascript文件不是一个可能的解决方案,因为我必须链接数千个文件 (我正在使用的一个库是ExtJs)是什么使得无法在不冻结visual studio的情况下构建项目...

可能解决方案

目前我有一个名为“Web”的(Web)MVC项目和一个名为“ClientScript”的(类库)项目,它包含在多个Web项目之间共享的所有JavaScript文件。 由于链接所有需要的JavaScript文件不是一个可能的解决方案(因为它是导致visual studio冻结的数千个文件的问题) 我使用每个Web项目中的构建事件将所有需要的JavaScript文件复制到各个项目(项目 - >属性 - >构建事件 - >构建后) 我在Web项目中的Post-build命令行如下所示:

start xcopy "$(SolutionDir)ClientScript\Frontend\*" "$(SolutionDir)Web\Scripts" /r /s /i /y /D /E

每次构建Web项目时,所有已更改的Javascript文件都会从ClientScript项目复制到Web项目。

在开发Javascripts时,我运行了一个小的“filewatcher”工具,当它发生变化时,它会自动将文件从ClientScript项目复制到每个Web项目。 这样,每当我对其中一个Javascripts进行更改时,我都不必构建Web项目。

将JS文件放在一个文件夹中,可能高于其他文件夹,并将它们添加到项目中,但使用“链接”选项。 它是“添加现有项目...”对话框中“确定”按钮下拉菜单的一部分。

任何在未来遇到此问题的人都应该知道Visual Studio中现在有共享项目来解决这个问题。 通用Windows项目默认使用它们,您可以通过下载和安装VS扩展来创建自己的项目: https//visualstudiogallery.msdn.microsoft.com/315c13a7-2787-4f57-bdf7-adae6ed54450

注意:此时,他们可能会对您尝试添加共享引用的项目类型感到挑剔。 我创建了一个JavaScript共享项目,以在Windows商店js应用程序和MVC Web应用程序之间共享js文件,它不会让我这样说他们必须使用相同的语言。 (它支持C#,C ++或JavaScript)。

当您运行每个新的ASP.NET MVC 4项目时,它需要一个新的端口,然后其他应用程序。

我只是建议你一个简单的事情。

运行一个包含所有pacakages的项目。 打开它们webmatrix并将它们作为localhost:80运行。

您需要在webmatrix中设置站点的设置部分中的端口。 现在它将在localhost上重新生成,现在您可以引用此包中的所有库。

稍微老一点的线程,但我有另一种使用Web Essentials做类似事情的方法,它处理不能正确发布的问题。

我在需要共享文件的项目之外有一个共享文件夹,通常也是一个“常见”项目,但也可以是Michael Perrenoud建议的一个简单文件夹。

但是,我在项目中创建了一个新的包,而不是“添加为链接”,它需要共享的js / css文件,其名称与共享文件相同,然后使用相对引用位置在共享文件夹中引用该文件而不是它开始的根基。

要将解决方案根目录中的共享文件夹中的文件添加到脚本文件夹,请在新的捆绑文件(* .bundle)中使用以下代码,根据需要更改文件夹/文件名。

<?xml version="1.0" encoding="utf-8"?>
<bundle xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://vswebessentials.com/schemas/v1/bundle.xsd">
        <settings>
                <minify>false</minify>
                <runOnBuild>true</runOnBuild>
        </settings>
        <files>
                <file>../../MySharedFolder/my-js-file.js</file>
        </files>
</bundle>

然后每次构建它都会重新创建具有最新版本的包,然后该版本也会按预期发布:)

如果需要,您甚至可以通过将“minify”更改为true来创建缩小版本。 或者更好的是,如果你愿意,你也可以将它们作为一个包加载,你有灵活性。

这是一个较旧的线程,但由于复杂的业务需求,现在应用程序分为不同的模块或子项目。因此,我们需要共享JavaScript文件,主题和CSS样式表文件等公共资源。

我个人认为常见的文件应放在单独的Asp .Net MVC 5项目中,该项目具有以下结构: ASP.NET MVC5文件夹结构

在此输入图像描述

现在最好的部分是您可以使用Bower,NPM或Nuget包管理器单独管理依赖项。

组织完此项目中的所有文件后,将此项目托管到您自己的CDN或可能在云上。 您可以使用捆绑方法中的使用CDN来获取脚本或链接引用。

这将有助于您在所有项目中共享公共资源。如果团队中有许多开发人员,并且如果有人添加了不兼容的版本库,则会影响所有应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM