gpt4 book ai didi

c# - ASP.NET 5中Global.json中的项目部分的说明

转载 作者:IT王子 更新时间:2023-10-29 04:43:45 26 4
gpt4 key购买 nike

我注意到在创建新的ASP.NET 5项目时,有一个src目录对我完全有意义,因为我始终将解决方案的所有代码放在一个名为source的目录中。

我注意到有一个名为global.json的文件,默认情况下其中包含以下内容:

{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-rc1-update1"
}
}

我在ASP.NET 5文档中找到了以下内容:
projects属性指定哪些文件夹包含解决方案的源代码。默认情况下,项目结构将源文件放置在src文件夹中,从而允许将构建工件放置在同级文件夹中,从而更容易从源代码管理中排除此类内容。

但是,这是我要牢记的项目结构(在相同的解决方案下,基本上是两个我想要的大型项目):
MySolution
MySolutionProject1Src
client
p1.WebAPI
business
p1.Business
p1.Model
data
p1.Repository
test
p1.BusinessTests
p1.WebAPITests


MySolutionProject2Src
client
p2.Web
business
p2.Business
p2.Model
data
p2.Repository
test
p2.BusinessTests

所以我会更新global.json如下吗? (每个父目录一个):
{
"projects": [ "MySolutionProject1Src", "MySolutionProject2Src" ],
"sdk": {
"version": "1.0.0-rc1-update1"
}
}

还是应该更像这样(每个子目录一个):
{
"projects": [ "MySolutionProject1Src/client", "MySolutionProject1Src/business", "MySolutionProject1Src/data" "MySolutionProject1Src/test", "MySolutionProject2Src/client", "MySolutionProject2Src/business", "MySolutionProject2Src/data" "MySolutionProject2Src/test" ],
"sdk": {
"version": "1.0.0-rc1-update1"
}
}

或者我应该只是将其保留为“src”,然后将所有内容作为子文件夹放在src下。

我假设我可以创建所需的任何解决方案结构,但我担心的是更新global.json项目部分以使其匹配时要遵循的规则。根据文档,它说将为global.json中指定的每个路径创建一个工件文件夹。所以我想知道我是否要为解决方案中的每个项目提供一个工件文件夹,还是为外部一个较大的项目。

最佳答案

首先,我会将您转发到the part of documentation,它描述了global.json

{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-beta5",
"runtime": "clr",
"architecture": "x86"
}
}
version(以及可选的 runtimearchitecture)很重要,因为您的计算机具有 dnx.exe的多个版本。您可以检查 %USERPROFILE%\.dnx\runtimes目录以查看所有已安装的运行时。 "sdk"global.json部分从您安装的运行时之一定义 dnx.exe的版本。

重要的是要了解 "projects"global.json部分,它将被扫描 所有同级文件夹在目录中每个目录下的任何级别。将找到的每个 project.json将被解释为解决方案的项目。

例如,您可以下载ASP.NET的某些部分并将其放置在解决方案层次结构的新子文件夹中。例如,您可以下载Entity Framework 7的 RC1源代码( the file),将其zip文件解压缩到项目的 ef文件夹内的新 src文件夹中。您将看到,在重新打开解决方案后不久,您的项目列表将越来越长,并且所有Entity Framework 7组件都将包含在解决方案中。同样,您可以将下载的源代码提取到单独的目录 C:\aspnet\EF7中并使用
{
"projects": [ "src", "c:/aspnet/EF7" ],
"sdk": {
"version": "1.0.0-rc1-update1"
}
}

您将具有相同的效果。如果以后决定删除调试Entity Framework 7的源代码,则应仅从 "c:/aspnet/EF7"中排除 global.json,然后在Visual Studio中通过在解决方案 View 中进行选择并单击Del键来删除以前添加的项目。

我认为应该清除文件夹结构中的可能性。

可能存在于解决方案层次结构中的另一个非常重要的可选文件是 NuGet.config文件。它定义了NuGet提要,将在其中加载程序包。问题在于,有许多NuGet存储库(请参阅 the answer),它们具有不同的ASP.NET 5组件初始版本。如果您使用 ,则确切的依赖项如
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"

那么只需在NuGet存储库中拥有显式版本即可。问题是,有时人们会使用类似
"EntityFramework.MicrosoftSqlServer": "7.0.0-*"

加载软件包的最新版本。如果使用错误的NuGet提要,则可以获取早期的RC2版本,该版本与其他RC1软件包不兼容(至少是因为在Beta版本之间重命名了许多组件)。为确保您的解决方案(所有项目)都使用RC1,您可以将以下 NuGet.config放在解决方案文件夹中(在所有项目的顶部),例如以下内容

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<clear /> <!-- ensure only the sources defined below are used -->
<add key="automatic" value="False" />
</packageRestore>
<packageSources>
<add key="AspNetVNext" value="https://www.myget.org/F/aspnetmaster/api/v3/index.json" />
<add key="NuGet" value="https://api.nuget.org/v3/index.json" />
</packageSources>
<activePackageSource>
<add key="AspNetVNext" value="true" />
<add key="NuGet" value="true" />
</activePackageSource>
</configuration>

参见 the documentation。我建议您在某些项目文件夹中打开命令行并执行
dnu feeds list

命令。它将显示当前文件夹和父文件夹中的所有 NuGet.config以及全局文件 %appdata%\NuGet\NuGet.Config将是 的组合。 NuGet将在所有 Activity 存储库中搜索软件包。在上述情况下,它将为 https://api.nuget.org/v3/index.jsonhttps://www.myget.org/F/aspnetmaster/api/v3/index.json

如果存在多个 NuGet.config,指向不同的NuGet提要或启用/禁用某些提要,则可能会发生冲突。命令 dnu feeds list在这里有帮助。您应该始终扫描项目层次结构中的所有 NuGet.config文件,以防止/解决冲突。解决许多冲突的方法主要是使用正确的提要或使用明确的版本来解决软件包。

我建议您阅读 the article,它描述了 NuGet配置继承

我希望您可以决定哪种结构更适合您的现有环境。我建议您保留标准结构
solution
src
project
folderWithProjects

并将 global.jsonNuGet.config放置在解决方案目录中。测试项目的默认位置:与主要项目分开:
solution
src
project
folderWithProjects
test
testproject1
testproject2

(您可以在 GitHub或MVC6 here上检查Entity Framework 7的结构)。您可以按照结构进行操作,也可以选择其他位置并修改 "projects"global.json部分。

更新: Microsoft在RC1和RC2之间进行了很多更改。 Dnx.exe在ASP.NET Core中将不再使用。一个应该使用 dotnet.exe代替。尚未完整记录新的/修改的 global.jsonproject.json的描述。您可以看到文档 here的初步版本。旧文档(在 https://docs.asp.net/en/latest/dnx下)上的链接现在已断开。

关于c# - ASP.NET 5中Global.json中的项目部分的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34791682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com