nuget 覆盖文件

标签 nuget nuget-package

是否可以强制 nuGet 包覆盖现有文件?我需要一种在 3 个类似项目中应用补丁(文件、dll、资源)的好方法,这可能是一个很好的解决方案。

最佳答案

它可以通过powershell和一个包依赖来完成......

我有一个为 ASP.NET MVC 创建的 NuGet 包,它包含我想添加到标准 Mvc 项目的所有文件(DisplayTemplates、EditorTemplate、Extensions、BaseController 等)。假设它叫做“Company.WebMvc”

我创建了另一个名为“Company.WebMvc-Prep”的 NuGet 包,它有一个 Install.ps1 脚本,可以从标准 Mvc 项目中删除我不想要的任何内容。这是删除现有脚本文件的代码示例...

param($installPath, $toolsPath, $package, $project)

#Remove Script Files

$scripts = $project.ProjectItems | Where-Object { $_.Name -eq "Scripts" }

if ($scripts) {

    $scripts.ProjectItems | ForEach-Object { $_.Delete() }

}

然后我使“Company.WebMvc-Prep”成为“Company.WebMvc”的依赖项。为什么?因为 Install.ps1(通常)在 NuGet 添加内容文件夹中的文件后运行。我需要它先删除文件,然后添加新文件。所以当你打电话...

安装包 Company.WebMvc

Company.WebMvc-Prep 首先安装,因为它是一个依赖项(运行 Install.ps1)

然后安装 Company.WebMvc 来添加您的内容。

总而言之...你可以通过 NuGet 包覆盖项目中的现有内容。

附言请记住,您还可以使用部分类来隔离 NuGet 包代码与项目特定代码。

关于nuget 覆盖文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100410/

相关文章:

mercurial - 子存储库(外部)环境中的 NuGet

visual-studio-2012 - 由于访问被拒绝错误,Nuget-update 不会安装

.net-core - '*.deps.json' 文件应该与程序集一起分发还是在 nuget 包内分发?

.NET 标准程序集 : create nuget packages that can be used by . NET Core 和由本地 Nuget.Server 托管的完整 .NET

c# - 无法加载文件或程序集 'Microsoft.Practices.EnterpriseLibrary.Common' 或其依赖项之一

.net - NuGet Packager Task 在 VSTS 中使用错误的 MSBuild?

azure - Windows Azure 存储版本升级到 > 4 会导致 "The remote server returned an error: (400) Bad Request."

.net - 打包csproj时如何从NuGet包中排除程序集?

c# - 引用 NuGet 包后避免在构建输出中使用多个 DLL

c# - 在 .exe 中包含 Nuget 依赖项