无法使用 project.json 在 .NET Core 中构建新项目,但现有项目 build/restore 可以
Unable to build new projects in .NET Core using project.json but existing ones build/restore fine
所以这里的简短版本是我现有的旧回购利用 global.json
和 project.json
(所有 Nancy 项目)完美无缺地工作。
但是,如果我尝试创建具有相同 global.json
、project.json
和文件结构的新文件夹结构,我在使用 cli 尝试任何操作时会收到以下错误:
C:\VSCode\DispoStatService> dotnet restore
A JSON parsing exception occurred in [C:\VSCode\DispoStatService\global.json]: * Line 1, Column 2 Syntax error: Malformed token
MSBUILD : error MSB1003: Specify a project or solution file. The current working directory does not contain a project or solution file
详情请见截图:
事实证明,我并没有真正找到这里发生的事情的最终问题或解决方案。不过,正如我们经常做的那样,我让它工作了。
我假设也许只是从一组不同的文件开始(因为错误一直告诉我 global.json
中有一个坏字符)就成功了。
tl;dr - 我基本上只是复制了一个我已经拥有的单独的 NancyFX 项目模板
- 它确实使用了不同的 sdk/cli 版本,但我认为这不是真正的罪魁祸首
- 然后我重命名了所有命名空间以匹配新项目
最终,我的project.json
{
"name": "DispoStatsService",
"version": "1.0.0-beta",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.AspNetCore.Owin": "1.1.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.AspNetCore.Diagnostics": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.Extensions.Configuration.Binder": "1.1.0",
"Microsoft.AspNetCore.StaticFiles": "1.1.0",
"Nancy": "2.0.0-clinteastwood",
"Dapper": "1.50.2"
},
"frameworks": {
"netcoreapp1.1": {
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
],
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
}
}
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version":"1.1.0-preview4-final",
"imports": "portable-net45+win8+dnxcore50"
}
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"web.config",
"appsettings.json",
"Content"
]
},
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
和我的global.json
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003131"
}
}
在此处查看目录结构:
我遇到了同样的问题,直到我从 *.json 文件中删除 BOM
所以这里的简短版本是我现有的旧回购利用 global.json
和 project.json
(所有 Nancy 项目)完美无缺地工作。
但是,如果我尝试创建具有相同 global.json
、project.json
和文件结构的新文件夹结构,我在使用 cli 尝试任何操作时会收到以下错误:
C:\VSCode\DispoStatService> dotnet restore
A JSON parsing exception occurred in [C:\VSCode\DispoStatService\global.json]: * Line 1, Column 2 Syntax error: Malformed token
MSBUILD : error MSB1003: Specify a project or solution file. The current working directory does not contain a project or solution file
详情请见截图:
事实证明,我并没有真正找到这里发生的事情的最终问题或解决方案。不过,正如我们经常做的那样,我让它工作了。
我假设也许只是从一组不同的文件开始(因为错误一直告诉我 global.json
中有一个坏字符)就成功了。
tl;dr - 我基本上只是复制了一个我已经拥有的单独的 NancyFX 项目模板
- 它确实使用了不同的 sdk/cli 版本,但我认为这不是真正的罪魁祸首
- 然后我重命名了所有命名空间以匹配新项目
最终,我的project.json
{
"name": "DispoStatsService",
"version": "1.0.0-beta",
"buildOptions": {
"debugType": "portable",
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.AspNetCore.Owin": "1.1.0",
"Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.AspNetCore.Diagnostics": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.Extensions.Configuration.Binder": "1.1.0",
"Microsoft.AspNetCore.StaticFiles": "1.1.0",
"Nancy": "2.0.0-clinteastwood",
"Dapper": "1.50.2"
},
"frameworks": {
"netcoreapp1.1": {
"imports": [
"dotnet5.6",
"dnxcore50",
"portable-net45+win8"
],
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.1.0"
}
}
}
},
"tools": {
"Microsoft.AspNetCore.Server.IISIntegration.Tools": {
"version":"1.1.0-preview4-final",
"imports": "portable-net45+win8+dnxcore50"
}
},
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
},
"publishOptions": {
"include": [
"wwwroot",
"web.config",
"appsettings.json",
"Content"
]
},
"scripts": {
"postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
}
}
和我的global.json
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003131"
}
}
在此处查看目录结构:
我遇到了同样的问题,直到我从 *.json 文件中删除 BOM