对于一个客户,我们正在尝试构建一个 webb 应用程序,他们可以构建补丁(新版本),而他们的客户可以通过点击应用程序更新自行完成。
我之前在 nuget 上做了一些小实验,并以此作为参考: http ://haacked.com/archive/2011/01/15/building-a-self-updating-site-using-nuget.aspx
不幸的是,在这个项目中安装和使用的一些 nuget 包是新的且与 autoupdate 0.2.1 的 nuget 包不兼容的地方使用 NuGet.Core 1.3.20419.9005。
所以我采用了自动更新代码并将 nuget 升级到 2.5 并修复了新 nuget 核心的所有新问题(功能/参数等的更改)。
现在它可以工作,只要我可以安装 wich 包,我可以看到远程服务器上有一个新版本。但是,当我尝试将本地软件包升级到服务器上的版本时,出现错误:System.EntryPointNotFoundException:找不到入口点。
这是代码出错的地方:
public IEnumerable<string> UpdatePackage(IPackage package)
{
return this.PerformLoggedAction(delegate
{
bool updateDependencies = true;
bool allowPrereleaseVersions = true;
this._projectManager.UpdatePackageReference(package.Id, package.Version, updateDependencies, allowPrereleaseVersions);
});
}
[EntryPointNotFoundException: Entry point was not found.]
NuGet.IProjectSystem.get_ProjectName() +0
NuGet.ProjectManager.UpdatePackageReference(String packageId, Func`1 resolvePackage, Boolean updateDependencies, Boolean allowPrereleaseVersions, Boolean targetVersionSetExplicitly) +1014
NuGet.ProjectManager.UpdatePackageReference(String packageId, SemanticVersion version, Boolean updateDependencies, Boolean allowPrereleaseVersions) +233
包参数是我要升级到的包。
在我的网络应用程序中,我得到了包含已安装的 .nupkg 文件的文件夹 \App_Data\packages。在我的远程文件夹中,我得到了所有已安装的软件包 + 我的新版本软件包。
我不明白入口点是什么以及如何解决这个问题。