类似的问题:Renaming Web.config to run transforms breaks nuget package installation
我正在尝试让我的配置文件的构建转换与nuget一起工作。我有Web.Base.Config、Web.Debug.Config等。
如果不能将nuget的目标更改为Web.Base.Config而不是Web.Config,那么我希望在nuget转换之前将Web.Base.Config复制到Web.Config,并在转换之后从Web.config复制回Web.Base.config。
有没有办法创建一个BeforeTarget AfterTarget任务来实现这一点?我不确定nuget的目标是什么。
或者,有没有其他的解决方案可以在开发机器上进行构建转换?
编辑:
我发现我可以将Nuget.Core安装到我的项目中,在ProjectManager类中有一个名为PackageReferenceAdding的事件,如果我能想出如何从UI界面挂接到这个类中来做<Copy SourceFiles="Web.Base.config" DestinationFiles="Web.config" />或类似的事情的话。
编辑2:我找到了Nuget.VisualStudio (我不确定这是由nuget中的项目调用的,还是由安装nuget包的解决方案调用的,我找不到太多信息)
并且认为,如果在正确的时间触发,下面的代码应该可以工作:
private void CopyTask()
{
var componentModel = (IComponentModel)Package.GetGlobalService(typeof(SComponentModel));
var installerServices = componentModel.GetService<IVsPackageInstallerEvents>();
installerServices.PackageInstalling += metadata => {
//Copy Web.Base.Config to Web.Config
};
installerServices.PackageInstalled += metadata =>
{
//Copy Web.Config to Web.Base.Config
};
}发布于 2016-11-02 09:41:43
Web.config的nuget目标是在创建项目并安装nuget时生成的。它不是构建过程的目标。但转换操作是在构建过程中操作的,它将转换整个文件,而不是文件的一部分。所以我们不能把nuget的目标改成Web.Base.Config。
此外,我们经常在packages.config文件中管理nuget包的安装/卸载。在Web.config文件中,它只列出了当前项目中使用的程序集。它们是两个不同的动作。
https://stackoverflow.com/questions/40312028
复制相似问题