Когда проект Visual Studio использует, как я могу получить доступ к файлам, которые являются частью пакета? Например, «Newtonsoft. Json» V12.0.3 содержит несколько файлов, кроме Newtonsoft. Json .Dll - таких как newtonsoft.json\12.0.3\lib\net20\Newtonsoft.Json.xml
и newtonsoft.json\12.0.3\LICENSE.md
.
Я нашел GeneratePathProperty
- что здорово , но он не работает при создании SDK-проектов внутри VS2017. (При создании проектов в старом стиле, это работает).
<IncludeAssets>
, похоже, ничего не делает.
Часть моего файла csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" GeneratePathProperty="true">
<IncludeAssets>all</IncludeAssets>
</PackageReference>
</Project>
Теперь, если я собираю из командной строки (msbuild.exe 15.9.21 + g9802d43bc3) msbuild /t:Restore;Rebuild /p:Configuration=Release /p:Platform="Any CPU" MyProject.sln
MyProject.csproj.nuget.g.props
содержит
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
<PkgNewtonsoft_Json Condition=" '$(PkgNewtonsoft_Json)' == '' ">%userprofile%\.nuget\packages\newtonsoft.json\12.0.3</PkgNewtonsoft_Json>
</PropertyGroup>
Что здорово, потому что я могу использовать $ (PkgNewtonsoft_ Json) в файле моего проекта по мере необходимости, чтобы получить эти файлы.
Но, когда я строю из VS2017 (V15.9.17), мой файл * PROPS не получает этот символ, определенный: - (
-------- Обновление --------
ОК, после перезагрузки и повторной попытки все заработало :-) У меня было изменить Targets="restore;build"
на Targets="restore;"
, иначе я получу ошибки. Учитывая Lib1 и Lib2, где Lib2 зависит от Lib1, я получаю эту ошибку
Target CoreCompile:
Using shared compilation with compiler from directory: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn
CSC : error CS0006: Metadata file 'C:\src\...\build\Lib2\bin\Debug\netstandard2.0\Lib2.dll' could not be found
Done building target "CoreCompile" in project "Lib1.csproj" -- FAILED.
Затем, после построения всего решения - оно терпит неудачу, и когда я собираю Lib1 снова, оно терпит неудачу с
error MSB4006: There is a circular dependency in the target dependency graph involving target "Build".```