[FeatureRequest] Перевод на VS 2017 csproj
От: Sinix  
Дата: 15.02.17 09:43
Оценка:
В связи с наступающим релизом VS 2017:
есть мысль наконец переехать на новый csproj + выпустить альфу под .net Core (или подождать до netstandard 2.0?).

На свежеобновлённой RC студии проект собирается локально с вот этим:
  CodeJam.Main.csproj
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net4.5.2</TargetFramework>
    <Version>1.3.0-beta4</Version>
    <Authors>Andrew Koryavchenko, Igor Sinicyn, Igor Tkachev, rameel</Authors>
    <Company>RSDN.ru</Company>
    <PackageId>CodeJam</PackageId>
    <Product>CodeJam</Product>
    <Description>CodeJam is a set of handy reusable .NET components that can simplify your daily work and save your time when you copy and paste your favorite helper methods and classes from one project to another.</Description>
    <Copyright>RSDN.ru, 2017</Copyright>
    <PackageTags>list string collection data-structure threading xml reflection async assertion IO extension algorithms structures utilities suffix-tree range tagged-union discriminated union discriminated-union variant variant-record disjoint-union sum-type</PackageTags>
    <PackageLicenseUrl>https://github.com/rsdn/CodeJam/blob/master/LICENSE</PackageLicenseUrl>
    <PackageProjectUrl>https://github.com/rsdn/CodeJam</PackageProjectUrl>
    <PackageIconUrl>https://raw.githubusercontent.com/rsdn/CodeJam/master/Main/nuget/CodeJam.Main.Icon.png</PackageIconUrl>
    <RepositoryUrl></RepositoryUrl>
    <PackageReleaseNotes></PackageReleaseNotes>
    <AssemblyVersion>1.3.0.0</AssemblyVersion>
    <FileVersion>1.3.0.0</FileVersion>
    <SignAssembly>True</SignAssembly>
    <DelaySign>False</DelaySign>
    <AssemblyOriginatorKeyFile>..\..\CodeJam.snk</AssemblyOriginatorKeyFile>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
    <DefineConstants>TRACE;DEBUG;FW461;FW46;FW452</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
    <DefineConstants>TRACE;RELEASE;FW461;FW46;FW452</DefineConstants>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="..\..\Jetbrains.Annotations.cs" Link="Jetbrains.Annotations.cs" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="System.ValueTuple" Version="4.3.0" />
  </ItemGroup>

</Project>


  AssemblyInfo.cs
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("2f2046cc-fb47-4318-b335-5a82b04b6c40")]

[assembly: InternalsVisibleTo("CodeJam-Tests, PublicKey=" +
    "00240000048000009400000006020000002400005253413100040000010001000de1c523b74719" +
    "e2f54eed3a5512cfedfa78ccfef5c1d196e9a6b09522e7a833ab027deff5462ab26b5d5b51ed42" +
    "10c889d2177f16f3678dfe65ba202f7b142b3d37e7500df14f86a616b111989b58029fc1ad8932" +
    "7170e7ddd53d56c94dda5d4d3e9e0e4de45b9e8b09800c5e969120931da76fd3f2277a525725f0" +
    "c495f8d3")]
[assembly: InternalsVisibleTo("CodeJam-Tests.Performance, PublicKey=" +
    "00240000048000009400000006020000002400005253413100040000010001000de1c523b74719" +
    "e2f54eed3a5512cfedfa78ccfef5c1d196e9a6b09522e7a833ab027deff5462ab26b5d5b51ed42" +
    "10c889d2177f16f3678dfe65ba202f7b142b3d37e7500df14f86a616b111989b58029fc1ad8932" +
    "7170e7ddd53d56c94dda5d4d3e9e0e4de45b9e8b09800c5e969120931da76fd3f2277a525725f0" +
    "c495f8d3")]

[assembly: InternalsVisibleTo("CodeJam.Experimental, PublicKey=" +
    "00240000048000009400000006020000002400005253413100040000010001000de1c523b74719" +
    "e2f54eed3a5512cfedfa78ccfef5c1d196e9a6b09522e7a833ab027deff5462ab26b5d5b51ed42" +
    "10c889d2177f16f3678dfe65ba202f7b142b3d37e7500df14f86a616b111989b58029fc1ad8932" +
    "7170e7ddd53d56c94dda5d4d3e9e0e4de45b9e8b09800c5e969120931da76fd3f2277a525725f0" +
    "c495f8d3")]
[assembly: InternalsVisibleTo("CodeJam.Experimental-Tests, PublicKey=" +
    "00240000048000009400000006020000002400005253413100040000010001000de1c523b74719" +
    "e2f54eed3a5512cfedfa78ccfef5c1d196e9a6b09522e7a833ab027deff5462ab26b5d5b51ed42" +
    "10c889d2177f16f3678dfe65ba202f7b142b3d37e7500df14f86a616b111989b58029fc1ad8932" +
    "7170e7ddd53d56c94dda5d4d3e9e0e4de45b9e8b09800c5e969120931da76fd3f2277a525725f0" +
    "c495f8d3")]
[assembly: InternalsVisibleTo("CodeJam.Experimental-Tests.Performance, PublicKey=" +
    "00240000048000009400000006020000002400005253413100040000010001000de1c523b74719" +
    "e2f54eed3a5512cfedfa78ccfef5c1d196e9a6b09522e7a833ab027deff5462ab26b5d5b51ed42" +
    "10c889d2177f16f3678dfe65ba202f7b142b3d37e7500df14f86a616b111989b58029fc1ad8932" +
    "7170e7ddd53d56c94dda5d4d3e9e0e4de45b9e8b09800c5e969120931da76fd3f2277a525725f0" +
    "c495f8d3")]


Все прочие проекты ссылку успешно подхватили, тесты зелёные.

Осталось самое гадкое — таргетинг под прошлые FW, нюгет-пакет (вот тут должно быть попроще) и билд-скрипт
Отредактировано 15.02.2017 9:46 Sinix . Предыдущая версия . Еще …
Отредактировано 15.02.2017 9:45 Sinix . Предыдущая версия .
Re: [FeatureRequest] Перевод на VS 2017 csproj
От: rameel https://github.com/rsdn/CodeJam
Дата: 15.02.17 11:02
Оценка:
Здравствуйте, Sinix, Вы писали:

S>есть мысль наконец переехать на новый csproj + выпустить альфу под .net Core (или подождать до netstandard 2.0?).


С .NET Core как мне думается лучше подождать до netstandard 2, меньше дополнительных дефайнов в коде будет, если они вообще понадобятся)

S>На свежеобновлённой RC студии проект собирается локально


У меня собранный файл ILSpy не хочет открывать Это мне так везет или всем?
System.OutOfMemoryException: Array dimensions exceeded supported range.
   at Microsoft.Cci.Pdb.MsfDirectory..ctor(PdbReader reader, PdbFileHeader head, BitAccess bits)
   at Microsoft.Cci.Pdb.PdbFile.LoadFunctions(Stream read, Dictionary`2& tokenToSourceMapping, String& sourceServerData, Int32& age, Guid& guid)
   at Mono.Cecil.Pdb.PdbReader.PopulateFunctions()
   at Mono.Cecil.Pdb.PdbReader.ProcessDebugHeader(ImageDebugDirectory directory, Byte[] header)
   at Mono.Cecil.ModuleDefinition.ProcessDebugHeader()
   at ICSharpCode.ILSpy.LoadedAssembly.LoadSymbols(ModuleDefinition module)
   at ICSharpCode.ILSpy.LoadedAssembly.LoadAssembly(Object state)
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()


Update:
Старая проблема. Does not work with .net core assemblies и Failure to load assemblies with a portable pdb
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Отредактировано 15.02.2017 11:15 rameel . Предыдущая версия .
Re[2]: [FeatureRequest] Перевод на VS 2017 csproj
От: Sinix  
Дата: 15.02.17 11:18
Оценка:
Здравствуйте, rameel, Вы писали:

R>С .NET Core как мне думается лучше подождать до netstandard 2, меньше дополнительных дефайнов в коде будет, если они вообще понадобятся)

Ну, следуя традиции что-то да анонсировать, его к build 2017 поди выпустят.

Я бы сделал альфа-версию под .core прям сейчас (после того, как на новый формат проекта всё переведётся, понятное дело). Чисто чтоб оценить масштаб бедствий.

S>>На свежеобновлённой RC студии проект собирается локально

R>У меня собранный файл ILSpy не хочет открывать Это мне так везет или всем?
Дома гляну, работа пока.
Re[2]: [FeatureRequest] Перевод на VS 2017 csproj
От: Sinix  
Дата: 15.02.17 11:22
Оценка:
Здравствуйте, rameel, Вы писали:

R>Update:

R>Failure to load assemblies with a portable pdb

Тааак, тогда у нас косяк
С — совместимость.
https://github.com/dotnet/cli/issues/3421


Надо <DebugType>full</DebugType> докинуть (pdbonly для релизной сборки).
Отредактировано 15.02.2017 11:27 Sinix . Предыдущая версия . Еще …
Отредактировано 15.02.2017 11:24 Sinix . Предыдущая версия .
Re[3]: [FeatureRequest] Перевод на VS 2017 csproj
От: rameel https://github.com/rsdn/CodeJam
Дата: 15.02.17 11:27
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Тааак, тогда у нас косяк и переходить на новый формат проекта низзя. Если на выходе действительно portable pdb генерятся и это никак не поменять. Младшие студии portable pdb не поддерживают.


Получается, что так.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[4]: [FeatureRequest] Перевод на VS 2017 csproj
От: Sinix  
Дата: 15.02.17 11:37
Оценка: 21 (1)
Здравствуйте, rameel, Вы писали:

R>Получается, что так.


Неа, фигню написал. Прошлый пост поправил.

Всего-то надо <DebugType>full</DebugType> докинуть (pdbonly для релизной сборки).
Re[5]: [FeatureRequest] Перевод на VS 2017 csproj
От: rameel https://github.com/rsdn/CodeJam
Дата: 15.02.17 11:59
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Всего-то надо <DebugType>full</DebugType> докинуть (pdbonly для релизной сборки).


Работает.

PS. Ох, и ведь видел же я эту настройку, по диагонали видать смотрел
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[6]: [FeatureRequest] Перевод на VS 2017 csproj
От: Sinix  
Дата: 15.02.17 12:11
Оценка: 11 (1) +1 :)
Здравствуйте, rameel, Вы писали:

R>PS. Ох, и ведь видел же я эту настройку, по диагонали видать смотрел

Так она всю жисть была и всю жисть имела правильное значение.

Народ в .core таки слишком заигрался в linux-way и на совместимость забил в принципе. Что меня больше всего пугает — полное отсутствие хоть какой-то реакции после очередного факапа. Очередной шедеврик:

This kind of bug makes me even more fearful of the bugs we're not detecting because we're not testing using a verifier on the results of compiling programs that contain ref returns.

Простите, что?

Ещё одна закладка в "Как не надо, избранное".
Re: [FeatureRequest] Перевод на VS 2017 csproj
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.02.17 17:42
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>В связи с наступающим релизом VS 2017:

S>есть мысль наконец переехать на новый csproj

Что это даст? Поддержку кора?

S>Осталось самое гадкое — таргетинг под прошлые FW, нюгет-пакет (вот тут должно быть попроще) и билд-скрипт


Без этого никак.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: [FeatureRequest] Перевод на VS 2017 csproj
От: Sinix  
Дата: 15.02.17 17:59
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Что это даст? Поддержку кора?

Ну, хотя бы возможность её добавить
+, если я правильно понимаю, то мы сможем отказаться от батника, прописав все target frameworks в проекте.
Conditionals build symbols вроде бы можно по if ($(TargetFramework)='...') включать.
В итоге сборка нюгет-пакета должна автоматом заработать.

Хотя посмотрел я на мучения народа… как-то не хочется на все грабли наступать.
Предлагаю пока отложить. Как-то поторопились в MS с релизом студии
Re[2]: [FeatureRequest] Перевод на VS 2017 csproj
От: Sinix  
Дата: 13.04.17 05:42
Оценка:
Здравствуйте, AndrewVK, Вы писали:

S>>Осталось самое гадкое — таргетинг под прошлые FW, нюгет-пакет (вот тут должно быть попроще) и билд-скрипт


AVK>Без этого никак.


Дошли руки, прикрутил мульти-таргетинг в самом проекте. Работает начиная с VS 2017 update 1. Из багов
* в appveyor не подхватывается версия нюгет-пакета. Починю, если решим мержить.
* Отвалилась сборка справки. Тоже починим.
Пробный вариант можно глянуть тут: https://github.com/rsdn/CodeJam/pull/33

Нужно оно нам только если добавлять поддержку .core, что в принципе сделать довольно легко.

Плюсы: каждый раз компиляция идёт под все платформы, косяков с "забыл про 3.5" не будет.
Минусы: каждый раз компиляция идёт под все платформы. Надо будет мульти-таргетинг conditional сделать, только для релизной сборки.

Собственно вопрос: копать дальше, забиваем, или кто-то ещё возьмётся за таск?
Отредактировано 13.04.2017 5:57 Sinix . Предыдущая версия .
Re[3]: [FeatureRequest] Перевод на VS 2017 csproj
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.04.17 11:46
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>Собственно вопрос: копать дальше, забиваем, или кто-то ещё возьмётся за таск?


Тут такое дело — надо понять, планирует ли кто нибудь в ближайшее время использовать CodeJam под Core/
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[4]: [FeatureRequest] Перевод на VS 2017 csproj
От: Sinix  
Дата: 13.04.17 11:50
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Тут такое дело — надо понять, планирует ли кто нибудь в ближайшее время использовать CodeJam под Core.


У меня в планах, после релиза второго netstandard. Самое сложное — убедиться, что идея рабочая — уже сделано, так что пока не горит.
Re[5]: [FeatureRequest] Перевод на VS 2017 csproj
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.04.17 11:56
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>У меня в планах, после релиза второго netstandard.


Давай тогда отложим до релиза. А после релиза сразу под него и сделаем.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.