nuget覆盖文件

kee*_*ney 14 nuget nuget-package

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

byt*_*der 12

它可以通过powershell和包依赖来实现......

我有一个为ASP.NET MVC创建的NuGet包,它包含我想要添加到标准Mvc项目的所有文件(DisplayTemplates,EditorTemplate,Extensions,BaseController等).让我们说它叫做"Company.WebMvc"

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

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

#Remove Script Files

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

if ($scripts) {

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

}
Run Code Online (Sandbox Code Playgroud)

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

Install-Package Company.WebMvc

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

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

它的长短是......您可以通过NuGet包覆盖项目中的现有内容.

PS请记住,您也可以使用部分类来隔离NuGet包代码和项目特定代码.


dav*_*owl 5

目前不支持覆盖内容文件.