这是在不使用 CDN、LESS、SASS、NuGet 等的情况下在项目之间共享 Web 资源的“非常简单”的解决方案:
- 创建包含要共享的资源的通用解决方案文件夹,或者简单地将其中一个项目指定为主项目。
- 根据需要使用“添加为链接”将共享资源文件添加到每个项目中。
- 将AfterBuild任务添加到每个项目文件,将链接文件复制到项目文件夹。仅需要这样做,以便 Visual Studio 测试/调试 (F5) 可以在本地工作。
如果您需要有关如何执行此操作的详细信息,请继续阅读。
为共享资源配置解决方案文件夹
**请注意,如果您只是要将文件从一个项目直接共享到一个或多个其他项目,则可以跳过此步骤。
Visual Studio 解决方案文件夹不必反映物理文件系统文件夹,但这样做有助于保持理智。因此,首先在本地文件系统上创建文件夹并将资源文件复制到其中。新文件夹应位于您的解决方案文件夹下。例如:
\MySolution
\Common
\Images
\Scripts
\Styles
返回 Visual Studio,右键单击解决方案项目文件夹并使用添加解决方案文件夹复制新的文件系统文件夹。
接下来,通过右键单击每个文件夹并使用Add Existing Item添加文件夹的内容,将文件添加到新的解决方案文件夹中。
将共享资源添加为链接
对于将使用共享资源的每个项目,右键单击项目文件夹并选择Add Existing Item。浏览到公用文件夹,选择所需文件,单击“添加”按钮旁边的下拉箭头,然后选择“添加为链接”。
您可能会收到有关添加项目目录结构之外的文件的源代码控制警告,但这可以忽略,因为链接的文件将在其源代码控制下。
添加AfterBuild任务以复制文件
当您将应用程序发布到服务器时,链接的文件将复制到它们链接到的项目文件夹中,并且一切都按预期工作。但是,在开发环境中,链接文件实际上并不位于项目文件夹中。因此,当您在 VS 中按 F5 测试您的应用程序时,共享资源将丢失。
简单的解决方案是添加一个 MSBuild 任务,以便在每次构建后从其源中复制链接文件。需要对包含共享资源链接的每个项目执行此操作。
右键单击项目并选择Unload Project。再次右键单击该项目并选择Edit <ProjectFileName>。滚动到底部并添加以下内容(就在“</Project>”上方):
<Target Name="AfterBuild">
<!-- Copy linked content files to local folders so that they are available in the debugger.
This is only an issue when running the application locally. The linked files should
be automatically published to the correct folder when publishing to a web server. -->
<Copy SourceFiles="%(Content.Identity)"
DestinationFiles="%(Content.Link)"
SkipUnchangedFiles='true'
OverwriteReadOnlyFiles='true'
Condition="'%(Content.Link)' != ''" />
</Target>
**复制任务改编自TheCodeDestroyer 答案中的此链接。
保存项目文件,然后右键单击并选择Reload Project。