我在哪里可以找到 Microsoft.AspNet.WebApi NuGet 包的源代码?
Where can I find source code of Microsoft.AspNet.WebApi NuGet package?
我有几个关于 Microsoft.AspNet.WebApi NuGet 包源代码的问题:
- Microsoft.AspNet.WebApi Nuget 包源代码的存储库在哪里。
- 什么commit id对应NuGet包的5.2.3版本。
- 什么 *.nuspec 文件用于创建 Microsoft.AspNet.WebApi 程序包?
谢谢!
张贴以避免LINK只回答!
我如何制作自己的 NUGET 包,您也应该这样做作者:Scott Hanselman:
第 0 步 - 在此处获取 NuGet.exe 命令行。把它放在路径或其他地方。
第 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 出现在您的项目中时,亲爱的 Reader,我不希望它出现在命名空间 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,但有些需要。您可以进行安装。ps1 和卸载。ps1 并做很多事情。它们位于 Content 旁边的名为 Tools 的文件夹中(不在里面。)
这是我的安装。ps1。
注意:目前无法在包安装过程中停止安装,因此如果您尝试在 NuGet 1.0 上安装我的包,我只会警告您并要求您卸载。将来可能会有预安装或依赖性检查。因此在那里检查版本。
参数($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(测试版)并贡献您的包。只需完成向导并上传 nupkg。您还可以获得一个 API 密钥并使用命令行工具自动执行此操作,也许作为构建过程的一部分。
正在将我的应用程序提交到 NuGet Gallery
就是这样。如果您有开源库
我一直在寻找完全相同的东西,我终于找到了。此页面列出了版本以及它们在源代码中的对应位置。映射到 5.2.3 的是 v.3.2.3。
我有几个关于 Microsoft.AspNet.WebApi NuGet 包源代码的问题:
- Microsoft.AspNet.WebApi Nuget 包源代码的存储库在哪里。
- 什么commit id对应NuGet包的5.2.3版本。
- 什么 *.nuspec 文件用于创建 Microsoft.AspNet.WebApi 程序包?
谢谢!
张贴以避免LINK只回答!
我如何制作自己的 NUGET 包,您也应该这样做作者:Scott Hanselman:
第 0 步 - 在此处获取 NuGet.exe 命令行。把它放在路径或其他地方。
第 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 出现在您的项目中时,亲爱的 Reader,我不希望它出现在命名空间 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,但有些需要。您可以进行安装。ps1 和卸载。ps1 并做很多事情。它们位于 Content 旁边的名为 Tools 的文件夹中(不在里面。)
这是我的安装。ps1。
注意:目前无法在包安装过程中停止安装,因此如果您尝试在 NuGet 1.0 上安装我的包,我只会警告您并要求您卸载。将来可能会有预安装或依赖性检查。因此在那里检查版本。
参数($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(测试版)并贡献您的包。只需完成向导并上传 nupkg。您还可以获得一个 API 密钥并使用命令行工具自动执行此操作,也许作为构建过程的一部分。
正在将我的应用程序提交到 NuGet Gallery
就是这样。如果您有开源库
我一直在寻找完全相同的东西,我终于找到了。此页面列出了版本以及它们在源代码中的对应位置。映射到 5.2.3 的是 v.3.2.3。