Skip to content
This repository has been archived by the owner on May 17, 2024. It is now read-only.

Upgrade removes custom Import statements #443

Open
BhaaLseN opened this issue Jun 22, 2022 · 0 comments
Open

Upgrade removes custom Import statements #443

BhaaLseN opened this issue Jun 22, 2022 · 0 comments

Comments

@BhaaLseN
Copy link

BhaaLseN commented Jun 22, 2022

I just upgraded a few of my old .NET Framework projects (old style csproj) to SDK-style in preparation of getting more things done moving towards .NET 6, and one thing that happened for all projects was how my custom imports were removed.

My project files usually looked like this, to generalize/centralize a few things (where I want consistency across muany projects of a solution):

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\AssemblyInfo.targets" />
  <Import Project="..\Common.props" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{E2D91E9F-FFD0-4DFA-8029-094A8F64A91A}</ProjectGuid>
    ...

AssemblyInfo.targets has a few custom targets that fill in AssemblyInfo values; and in turn includes a common AssemblyInfo.props that defines things like base version numbers, the company name to use (which affects how settings are stored in %APPDATA%), copyright info etc.
Common.props defines things like the C# language version, Deterministic build rules, etc.
(Note: I know that both could just as well be achieved by using Directory.Build.targets and Directory.Build.props, but this kinda happened before I knew about those; and sometimes I had one-offs where I couldn't just apply things to all projects)

After running the conversion step with upgrade-assistant version v0.3.330701+fa00bab2d06aab9c710c344c0f32440ad4eb8410 (which I mainly used because I had it; I don't have try-convert installed manually) they were silently removed along with other .targets that were expected to go away.
According to the console output, it used the embedded/bundled try-convert with version 0.3.330701+3799b6849a9457619660a355ca9111c050b0ef79 (and thats pretty much the most recent commit to this date).

The obvious result of this was that any AssemblyInfo was missing from the build output, as if never set anywhere.

I found #370 (and the PR #378), which was supposedly fixed; but I never saw this Console.WriteLine happen:
https://github.com/mjrousos/try-convert/blob/ee032544590c99d818aacb66130048d20413780f/src/MSBuild.Conversion.Project/ProjectRootElementExtensionsForConversion.cs#L25-L28

It's not unfixable on my end or anything (and pretty straight-forward as well, since all my projects are under version control); but it is somewhat annoying. Plus the fact that it is supposedly supported but I didn't see any indication of it makes me wonder if theres a different bug sleeping somewhere.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant