我有一些关于Microsoft.AspNet.WebApi NuGet包源代码的问题:
谢谢!
答案 0 :(得分:3)
我正在寻找完全相同的东西,我终于找到了它。此页面列出了源中的版本及其对应的位置。 v.3.2.3映射到5.2.3。
答案 1 :(得分:0)
BY Scott Hanselman:http://www.hanselman.com/blog/CreatingANuGetPackageIn7EasyStepsPlusUsingNuGetToIntegrateASPNETMVC3IntoExistingWebFormsApplications.aspx
张贴以避免链接只有答案!
我如何制作我自己的小包以及你应该由Scott Hanselman提出来:
步骤0 - 在此处获取NuGet.exe命令行。把它放在Path或某个地方。
步骤1 - 为新软件包创建一个文件夹,通过命令行去那里并运行" nuget spec"
C:\Users\Scott\Desktop\AddMvc3ToWebForms>nuget spec
Created 'Package.nuspec' successfully.
C:\Users\Scott\Desktop\AddMvc3ToWebForms>dir Package.nuspec
Directory of C:\Users\Scott\Desktop\AddMvc3ToWebForms
02/15/2011 02:23 AM 813 Package.nuspec
1 File(s) 813 bytes
现在,我更改了这个文件的名称并进行了编辑。
<?xml version="1.0"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<id>AddMvc3ToWebForms</id>
<version>0.4</version>
<authors>Scott Hanselman</authors>
<owners>Scott Hanselman</owners>
<iconUrl>http://www.hanselman.com/images/nugeticon.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>A totally unsupported way to quickly add ASP.NET MVC 3 support to your WebForms Application. Works on my machine.</description>
<tags>MVC MVC3 ASP.NET WebForms</tags>
</metadata>
</package>
第2步 - 将内容添加到内容文件夹
由于我希望我的NuGet包将内容添加到目标Web应用程序中的文件夹,因此我将所需内容放在名为Content的文件夹中。其中的任何内容都会显示在我的目标项目的根目录中。这可以是CSS,JS,CS或VB文件,无论如何。这些文件都将被删除到应用程序包的项目中。
在我的项目中,我从MVC应用程序中获取文件夹并将它们放入我的NuGet文件夹结构中。所以,内容,控制器,模型,脚本,视图。从现有的空白ASP.NET MVC项目中复制它们。
我的NuGet目录,我正在构建包
第3步 - 确定需要预处理的内容
然而,当我的HomeController出现在您的项目中时,亲爱的读者,我不希望它出现在命名空间ScottMvcApplication中!你想要它在MvcApplication54或你的项目名称。我需要预先处理源代码以使用项目的上下文,名称,命名空间等。
对于我想要由NuGet自动预处理的文件,我添加.pp扩展名。在我的例子中,HomeController.cs.pp。
扩展名为.pp的预处理程序文件
然后我在安装时添加了一些我想替换的令牌。例如$ rootnamespace $或$ assemblyname $。您可以根据NuGet文档使用任何Visual Studio项目属性。
namespace $rootnamespace$.Controllers
{
public class HomeController : Controller
{
//snip
}
}
步骤4 - 确定需要合并的XML元素(通常是web.config)
下一个常见的预处理是向web.config添加元素。这是NuGet的一个不错的小功能,因为您只需要使用新元素创建web.config.transform,它将根据需要自动且非破坏性地添加(和删除)它们。这是我的web.config.transform,供参考。请注意,这不是一个完整的web.config。这是我在控制文件夹中添加到我的包中的那个。
<configuration>
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<pages>
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages"/>
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
步骤5 - 添加您可能需要的任何PowerShell脚本,尤其是添加引用
几乎完成了。大多数软件包都不需要很多PowerShell,但有些软件包需要。你可以有一个install.ps1和uninstall.ps1并做很多事情。这些文件夹位于一个名为Tools的文件夹中,该文件夹位于Content(不在内部)旁边。
这是我的install.ps1。
注意:目前,当它正在发生时无法停止安装包,所以如果你尝试在NuGet 1.0上安装我的,我会立即警告你并问你卸载。将来可能会进行预安装或依赖性检查。因此版本检查那里。
param($ installPath,$ toolsPath,$ package,$ project)
if ($host.Version.Major -eq 1 -and $host.Version.Minor -lt 1)
{
"NOTICE: This package only works with NuGet 1.1 or above. Please update your NuGet install at http://nuget.codeplex.com. Sorry, but you're now in a weird state. Please 'uninstall-package AddMvc3ToWebForms' now."
}
else
{
$project.Object.References.Add("Microsoft.CSharp");
$project.Object.References.Add("System.Web.Mvc");
$project.Object.References.Add("Microsoft.Web.Infrastructure");
$project.Object.References.Add("System.Web.WebPages");
$project.Object.References.Add("System.Web.Razor");
$project.Object.References.Add("System.ComponentModel.DataAnnotations");
}
请注意,在(未来)NuGet 1.2中我不需要这个代码,我只是直接在我的NuSpec文件中添加引用。
第6步 - 打包
返回命令行并运行nuget pack
C:\Users\Scott\Desktop\AddMvc3ToWebForms>nuget pack
Attempting to build package from 'AddMvc3ToWebForms.nuspec'.
Successfully created package 'C:\Users\Scott\Desktop\AddMvc3ToWebForms\AddMvc3ToWebForms.0.4.nupkg'.
第7步 - 提交您的包裹
接下来,登录NuGet Gallery(测试版)和Contribute Your Package。只需浏览向导并上传nupkg即可。您还可以获取API密钥并使用命令行工具自动执行此操作,这可能是构建过程的一部分。
将我的应用程序提交到NuGet Gallery
那就是它。如果你有一个开源的librar