2011-07-02 58 views
3

我正在创建一个nuget包,我希望兼容MVC2和MVC3应用程序(全部在.NET 4.0上)。针对不同MVC版本的不同NuGet Web.Config.Transforms

的问题是,我想一些命名空间添加到web.config文件(像这样):

<pages> 
    <namespaces> 
    <add namespace="NewPackage.Web" /> 
    </namespaces> 
</pages> 

但对于剃须刀,我不得不把它作为这样的:

<system.web.webPages.razor> 
    <pages> 
     <namespaces> 
      <add namespace="NewPackage.Web" /> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 

但是,当然,这不适用于MVC2。所以我希望只有在检测到mvc3时才有条件地运行web.config.transform。我了解nuget真的没有能力做到这一点,但我想知道PowerShell。我知道你可以创建一个install.ps1,我知道它可以检测项目的引用,但是它可以检测到引用版本号,然后运行web.config.transform?有更好的方法吗?

我知道我可以创建一个新的包下面像NewPackage.Mvc3的模式,就像我见过别人做的,但似乎并不很明显用户安装它,我只想要一个稍微不同的web.config.transform所以这是我的备用选项。

回答

3

我不相信你的描述可能使用默认的转换支持。您可能能够直接从powershell安装脚本调用转换功能,否则您将不得不手动进行更改(并在卸载脚本中将它们重新放回)。

+0

正如我所想。我希望知道如何从PowerShell调用变换功能(如果甚至可能的话)或者我还没有找到/想到的替代方法。 –

+0

我建议就这个问题提出一个单独的问题,并且在[NuGet项目讨论区](http://nuget.codeplex.com/discussions) –

相关问题