【发布时间】:2019-05-20 18:35:09
【问题描述】:
我有许多需要与之分享内容的网站。我有一个业务核心框架库,我可以通过 nuget 与我的所有网站共享代码。我需要知道的是,如果有这样的事情,我可以通过像我的业务库这样的 nuget 包与多个站点共享 asp.net 页面 (aspx)。我希望将某些页面包含在我的所有站点中,而不必逐个添加它们。我只想添加一个 nuget 包并将它们存在于项目中。这可能吗?
【问题讨论】:
我有许多需要与之分享内容的网站。我有一个业务核心框架库,我可以通过 nuget 与我的所有网站共享代码。我需要知道的是,如果有这样的事情,我可以通过像我的业务库这样的 nuget 包与多个站点共享 asp.net 页面 (aspx)。我希望将某些页面包含在我的所有站点中,而不必逐个添加它们。我只想添加一个 nuget 包并将它们存在于项目中。这可能吗?
【问题讨论】:
您可以将页面编译成程序集并通过 NuGet 分发它。见How do I compile an ASP.NET website into a single DLL file?。
或者,您可以将这些页面添加为 NuGet 中的“内容”,它们将被复制到每个项目中。示例 - nuspec contentFiles Example。
您需要确定是否需要/可接受在每个项目中修改文件的能力 - 将文件添加为“内容”会使它们成为项目中的常规项目,因此人们可以自定义它们(可能是无意的)。
【讨论】:
packages.config的传统csproj,那么它会将content目录下的文件复制到项目中并可以修改。使用 PackageReference 的项目无论是 SDK 样式项目还是传统项目,都使用包中的 contentFiles,但使用包的项目不可编辑。