dotnet / sdk

Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI
https://dot.net/core
MIT License
2.69k stars 1.06k forks source link

VS 15.6 creates net461 exectuables that fail with Microsoft.Win32.Primitives not found #2037

Closed davkean closed 4 months ago

davkean commented 6 years ago

From @btrepp on March 12, 2018 5:38

In visual studio 15.6 using the new SDK (fsproj), if I build a project it runs fine on the machine, but when deployed to windows server it fails with (whenever it tries to do HTTP calls).

System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Win32.Primitives, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest
definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
   at System.Net.Http.WinHttpHandler.HandleAsyncException(WinHttpRequestState state, Exception ex)
   at System.Net.Http.WinHttpHandler.<StartRequest>d__101.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_1(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback,
Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state,
Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()

This file is in the output directory -a---- 11/06/2016 11:13 PM 22760 Microsoft.Win32.Primitives.dll

Why does this work on machines with VS2017 15.6 but not servers?. Especially when the library is on disk and next to the binary?.

Copied from original issue: dotnet/project-system#3369

davkean commented 6 years ago

I'll move this to the SDK for now. First of all, is there an app.config being produced? I would expect this to contain a binding redirect.

btrepp commented 6 years ago
<configuration>
  <appSettings>
  </appSettings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  </startup>
  <runtime>
    <gcServer enabled="true" />
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="NodaTime" publicKeyToken="4226afe0d9b296d1" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.4.0.0" newVersion="1.4.0.0" />
      </dependentAssembly>
    </assemblyBinding>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
      </dependentAssembly>
    </assemblyBinding>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.4.3.0" newVersion="4.4.3.0" />
      </dependentAssembly>
    </assemblyBinding>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Security.Cryptography.X509Certificates" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Here is the app.config, I've stripped out the appsettings elements.

livarcocc commented 6 years ago

Is there anything custom on the project file? Can you share that with us?

cc @dsplaisted @KevinRansom

dsplaisted commented 6 years ago

@joperezr Does this look like an issue where there's a different version of .NET, or a different patch, on the server than on the development machine?

@btrepp Can you share which version of the .NET Framework is installed both on your dev machine and on the server?

Thanks!

btrepp commented 6 years ago

I've followed this using powershell (somewhat) http://ilovepowershell.com/2017/02/19/what-is-your-net-framework-version-use-powershell-to-check/

Server

 PS C:\Users\Beau.Trepp.1\Documents> Get-Childitem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full'
l'

    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

Name                           Property
----                           --------
1033                           CBS           : 1
                               Install       : 1
                               Release       : 394802
                               Servicing     : 0
                               TargetVersion : 4.0.0
                               Version       : 4.6.01586

Development machine

PS H:\> Get-Childitem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full'

    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

Name                           Property
----                           --------
1033                           CBS           : 1
                               Install       : 1
                               Release       : 461310
                               Servicing     : 0
                               TargetVersion : 4.0.0
                               Version       : 4.7.02558
1036                           CBS           : 1
                               Install       : 1
                               Release       : 460798
                               Servicing     : 0
                               TargetVersion : 4.0.0
                               Version       : 4.7.02046

FSProj (Main thing to note here is that it targets net461). This was fine to do in earlier versions of VS

<Project Sdk="FSharp.NET.Sdk;Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net461</TargetFramework>
    <AssemblyName>BridgeFlow</AssemblyName>
  </PropertyGroup>

  <ItemGroup>
    <None Remove="**/*" />
  </ItemGroup>

  <ItemGroup>
    <Content Include="App.config" />
    <Compile Include="AssemblyInfo.fs" />
    <Compile Include="Util\EventStore.fs" />
    <Compile Include="Util\Manifest.fs" />
    <Compile Include="Util\DotLiquid.fs" />
    <Compile Include="Util\Argu.fs" />
    <Compile Include="Util\Freya.fs" />
    <Compile Include="Util\Template.fs" />
    <Compile Include="Util\NodaTime.fs" />
    <Compile Include="Util\Auth.fs" />
    <Compile Include="Types\Person.fs" />
    <Compile Include="Types\AuditInfo.fs" />
    <Compile Include="Types\BridgeId.fs" />
    <Compile Include="Types\Equipment.fs" />
    <Compile Include="Types\Site.fs" />
    <Compile Include="Types\Workarea.fs" />
    <Compile Include="Types\Consequence.fs" />
    <Compile Include="Types\Likelihood.fs" />
    <Compile Include="Types\Risk.fs" />
    <Compile Include="Types\Level.fs" />
    <Compile Include="Types\FriendlyId.fs" />
    <Compile Include="Types\HardwiredForce.fs" />
    <Compile Include="Types\LogicChange.fs" />
    <Compile Include="Types\Notifications\OnPublished.fs" />
    <Compile Include="Types\Notifications\OnRemoved.fs" />
    <Compile Include="Types\ForceId.fs" />
    <Compile Include="Types\CommentId.fs" />
    <Compile Include="Types\SapIdentifier.fs" />
    <Compile Include="Commands\BridgeCommands.fs" />
    <Compile Include="Events\DetailsUpdated.fs" />
    <Compile Include="Events\CommissioningSet.fs" />
    <Compile Include="Events\AssessedRisks.fs" />
    <Compile Include="Events\ApproversSelected.fs" />
    <Compile Include="Events\ApproversConfirmed.fs" />
    <Compile Include="Events\Published.fs" />
    <Compile Include="Events\Closed.fs" />
    <Compile Include="Events\CommentDeleted.fs" />
    <Compile Include="Events\CommentModified.fs" />
    <Compile Include="Events\ForceRemoved.fs" />
    <Compile Include="Events\UntrackedForceAdded.fs" />
    <Compile Include="Events\SetpointChangeAdded.fs" />
    <Compile Include="Events\HardwiredForceAdded.fs" />
    <Compile Include="Events\LogicChanged.fs" />
    <Compile Include="Events\IdAssigned.fs" />
    <Compile Include="Events\Approved.fs" />
    <Compile Include="Events\AssignedTrackedForce.fs" />
    <Compile Include="Events\UnassignedTrackedForce.fs" />
    <Compile Include="Aggregates\BridgeRecordAggregate.fs" />
    <Compile Include="Forms\ProvidingDetail.fs" />
    <Compile Include="Forms\DeclaringCommissioning.fs" />
    <Compile Include="Forms\AssessingRisk.fs" />
    <Compile Include="Forms\AssigningApprovers.fs" />
    <Compile Include="Forms\ConfirmingApprovers.fs" />
    <Compile Include="Forms\Publishing.fs" />
    <Compile Include="Forms\Closing.fs" />
    <Compile Include="Forms\SettingUntrackedForces.fs" />
    <Compile Include="Forms\SettingSetpointChanges.fs" />
    <Compile Include="Forms\SettingHardwiredForces.fs" />
    <Compile Include="Forms\SettingLogicChanges.fs" />
    <Compile Include="Forms\AssignId.fs" />
    <Compile Include="Forms\ImportingBridge.fs" />
    <Compile Include="Forms\AddingComment.fs" />
    <Compile Include="Forms\Approve.fs" />
    <Compile Include="Query\ExportedBridge.fs" />
    <Compile Include="Query\ExportedComment.fs" />
    <Compile Include="Query\BridgePreview.fs" />
    <Compile Include="Query\ActiveManualForce.fs" />
    <Compile Include="Query\SiteSelectItem.fs" />
    <Compile Include="Query\MeetingSummary.fs" />
    <Compile Include="Query\BridgeApprovalStatus.fs" />
    <Compile Include="Query\BridgeDetails.fs" />
    <Compile Include="Query\ExternalForce.fs" />
    <Compile Include="Context.fs" />
    <Compile Include="StateContext.fs" />
    <Compile Include="LegacyContext.fs" />
    <Compile Include="ActiveBridges.fs" />
    <Compile Include="BridgeEvents.fs" />
    <Compile Include="ForceLoader.fs" />
    <Compile Include="Projections\ESConnection.fs" />
    <Compile Include="CommandHandlers\BridgeHandler.fs" />
    <Compile Include="Queries\Common.fs" />
    <Compile Include="Queries\AssignedForces.fs" />
    <Compile Include="Queries\UnassignedForces.fs" />
    <Compile Include="Queries\CreateBridgeQuery.fs" />
    <Compile Include="Queries\RiskAssessment.fs" />
    <Compile Include="Queries\BridgeApprovals.fs" />
    <Compile Include="Queries\ReviewWizard.fs" />
    <Compile Include="Queries\SiteBridges.fs" />
    <Compile Include="Queries\BridgeState.fs" />
    <Compile Include="Queries\ArchiveBridge.fs" />
    <Compile Include="Queries\AuditActive.fs" />
    <Compile Include="Views\Links.fs" />
    <Compile Include="Views\Templates.fs" />
    <Compile Include="Views\Environment.fs" />
    <Compile Include="Views\NotFound.fs" />
    <Compile Include="Views\Details.fs" />
    <Compile Include="Views\NewBridge.fs" />
    <Compile Include="Views\AssessRisks.fs" />
    <Compile Include="Views\SelectApprovers.fs" />
    <Compile Include="Views\ConfirmApprovers.fs" />
    <Compile Include="Views\Publish.fs" />
    <Compile Include="Views\AssignBridges.fs" />
    <Compile Include="Views\Closure.fs" />
    <Compile Include="Views\SelectSite.fs" />
    <Compile Include="Views\PLCAudit.fs" />
    <Compile Include="Views\DownloadBridges.fs" />
    <Compile Include="Views\RPC\Userlookup.fs" />
    <Compile Include="Views\RPC\Devnull.fs" />
    <Compile Include="Views\Intro.fs" />
    <Compile Include="Views\EditBridge.fs" />
    <Compile Include="Views\Meeting.fs" />
    <Compile Include="Views\Approval.fs" />
    <Compile Include="Views\Mock\ForceSyncMock.fs" />
    <Compile Include="Views\SiteMachines.fs" />
    <Compile Include="Views\BridgeMachines.fs" />
    <Compile Include="Reports.fs" />
    <Compile Include="Migrate.fs" />
    <Compile Include="Notify.fs" />
    <Compile Include="UseCases.fs" />
    <Compile Include="Web.fs" />
    <Compile Include="Logary.fs" />
    <Compile Include="Arguments.fs" />
    <Compile Include="Server.fs" />
    <Compile Include="Program.fs" />
    <None Include="Database\brold.dbml" />
    <None Include="Database\schema.dbml" />
    <EmbeddedResource Include="favicon.ico" />
    <EmbeddedResource Include="Migrations\Script0001 - Create Config Schema.sql" />
    <EmbeddedResource Include="Migrations\Script0002 - Create Config Site Table.sql" />
    <EmbeddedResource Include="Migrations\Script0003 - Create Config WorkArea Table.sql" />
    <EmbeddedResource Include="Migrations\Script0004 - Increase Name column width Workarea.sql" />
    <EmbeddedResource Include="Migrations\Script0005 - Create Trusted keys Table.sql" />
    <EmbeddedResource Include="Migrations\Script0006 - Add Notification Emails.sql" />
    <EmbeddedResource Include="Migrations\Script0007 - Add Reporting Schema.sql" />
    <EmbeddedResource Include="Migrations\Script0008 - Add Bridge Schema.sql" />
    <EmbeddedResource Include="Migrations\Script0009 - Add BridgId Column.sql" />
    <EmbeddedResource Include="Migrations\Script0010 - Add BridgId Report Columns.sql" />
    <EmbeddedResource Include="Migrations\Script0011 - Add ManualForceAggregate.sql" />
    <EmbeddedResource Include="Migrations\Script0012 - Add Active Forces View.sql" />
    <EmbeddedResource Include="Migrations\Script0013 - Add Bridge Removal Columns.sql" />
    <EmbeddedResource Include="Migrations\Script0014 - Change Manual Force Address to text.sql" />
    <EmbeddedResource Include="Migrations\Script0015 - Add State Schema.sql" />
    <EmbeddedResource Include="Migrations\Script0016 - Create Tracked Force Table.sql" />
    <EmbeddedResource Include="Migrations\Script0017 - Create Bridge Detail Table.sql" />
    <EmbeddedResource Include="Migrations\Script0018 - Create Bridge Removal Table.sql" />
    <EmbeddedResource Include="Migrations\Script0019 - Add Bridge Modification Column.sql" />
    <EmbeddedResource Include="Migrations\Script0020 - Add Bridge RiskAssessment.sql" />
    <EmbeddedResource Include="Migrations\Script0021 - Add Tracked Force View.sql" />
    <EmbeddedResource Include="Migrations\Script0022 - Tracked Force Returns Removed.sql" />
    <EmbeddedResource Include="Migrations\Script0023 - Tracked Force Config.sql" />
    <EmbeddedResource Include="Migrations\Script0024 - State Forces.sql" />
    <EmbeddedResource Include="Scripts\required_input.js" />
    <EmbeddedResource Include="Templates\bridge_wizard_details.liquid" />
    <EmbeddedResource Include="Templates\_assign_bridge.liquid" />
    <EmbeddedResource Include="Templates\_edit_detail.liquid" />
    <EmbeddedResource Include="Templates\site_records.liquid" />
    <EmbeddedResource Include="Templates\_site_select.liquid" />
    <EmbeddedResource Include="Templates\_remove.liquid" />
    <EmbeddedResource Include="Templates\_layout.liquid" />
    <EmbeddedResource Include="Templates\_edit_manual.liquid" />
    <EmbeddedResource Include="Templates\_edit_logic.liquid" />
    <EmbeddedResource Include="Templates\_edit_hardwired.liquid" />
    <EmbeddedResource Include="Templates\_edit_setpoint.liquid" />
    <EmbeddedResource Include="Templates\_edit_comment.liquid" />
    <EmbeddedResource Include="Templates\_edit_tracked.liquid" />
    <EmbeddedResource Include="Templates\_audit.liquid" />
    <EmbeddedResource Include="Templates\_guide.liquid" />
    <EmbeddedResource Include="Templates\_head.liquid" />
    <EmbeddedResource Include="Templates\_published_email.liquid" />
    <EmbeddedResource Include="Templates\_approver_email.liquid" />
    <EmbeddedResource Include="Templates\_form_detail.liquid" />
    <EmbeddedResource Include="Templates\_form_booknumber.liquid" />
    <EmbeddedResource Include="Templates\edit_bridge.liquid" />
    <EmbeddedResource Include="Templates\meeting.liquid" />
    <EmbeddedResource Include="Templates\notfound.liquid" />
    <EmbeddedResource Include="Templates\approve.liquid" />
    <EmbeddedResource Include="Templates\approve_forbidden.liquid" />
    <EmbeddedResource Include="Templates\approve_done.liquid" />
    <EmbeddedResource Include="Templates\bridge_view.liquid" />
    <EmbeddedResource Include="Templates\bridge_archive_view.liquid" />
    <EmbeddedResource Include="Templates\bridge_remove.liquid" />
    <EmbeddedResource Include="Templates\bridge_assignforces.liquid" />
    <EmbeddedResource Include="Templates\bridge_wizard_riskassessment.liquid" />
    <EmbeddedResource Include="Templates\bridge_wizard_selectapprovers.liquid" />
    <EmbeddedResource Include="Templates\bridge_wizard_review.liquid" />
    <EmbeddedResource Include="Templates\site_unassigned.liquid" />
    <EmbeddedResoruce Include="Templates\site_records.liquid" />
    <EmbeddedResource Include="Templates\site_audit.liquid" />
    <EmbeddedResource Include="Templates\_nav.liquid" />
    <EmbeddedResource Include="Templates\_event_bridge_detail.liquid" />
    <EmbeddedResource Include="Templates\_event_bridge_risk.liquid" />
    <EmbeddedResource Include="Templates\_query_bridge_approval_status.liquid" />
    <EmbeddedResource Include="Templates\_force_table_manual.liquid" />
    <EmbeddedResource Include="Templates\_force_table_logic.liquid" />
    <EmbeddedResource Include="Templates\_force_table_hardwired.liquid" />
    <EmbeddedResource Include="Templates\_force_table_setpoint.liquid" />
    <EmbeddedResource Include="Templates\_force_table_tracked.liquid" />
    <EmbeddedResource Include="Templates\_bridge_removal.liquid" />
    <EmbeddedResource Include="Styles\ie_workarounds.css" />
    <EmbeddedResource Include="Styles\layout.css" />
    <EmbeddedResource Include="Styles\colors.css" />
    <EmbeddedResource Include="Styles\fonts.css" />
    <EmbeddedResource Include="Styles\layering.css" />
    <EmbeddedResource Include="Styles\roboto.css" />
    <EmbeddedResource Include="Styles\loading.css" />
    <EmbeddedResource Include="Styles\matrix.css" />
    <EmbeddedResource Include="Scripts\table_links.js" />
    <EmbeddedResource Include="Scripts\table_filtering.js" />
    <EmbeddedResource Include="Scripts\userlookup.js" />
    <EmbeddedResource Include="Scripts\focusin.js" />
    <EmbeddedResource Include="Scripts\add_table_rows.js" />
    <EmbeddedResource Include="Scripts\show_commissioning_copy.js" />
    <EmbeddedResource Include="Scripts\time.js" />
    <EmbeddedResource Include="Scripts\remove.js" />
    <EmbeddedResource Include="Scripts\matrix.js" />
    <EmbeddedResource Include="Scripts\introconfig.js" />
    <EmbeddedResource Include="Scripts\textarea_resize.js" />
    <EmbeddedResource Include="Scripts\validate_rows.js" />
    <EmbeddedResource Include="Documents\Electrical_Bridging_Procedure.pdf" />
    <EmbeddedResource Include="Documents\Electrical-Bridging-Procedure.svg" />
    <EmbeddedResource Include="..\..\paket-files\httpassets\cdnjs.cloudflare.com\moment.min.js">
      <Link>PaketScripts\moment.min.js</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\cdnjs.cloudflare.com\ramda.min.js">
      <Link>PaketScripts\ramda.min.js</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\cdnjs.cloudflare.com\turbolinks.js">
      <Link>PaketScripts\turbolinks.js</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\cdnjs.cloudflare.com\introjs.min.css">
      <Link>PaketScripts\introjs.min.css</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\cdnjs.cloudflare.com\reset.min.css">
      <Link>PaketScripts\reset.min.css</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\cdnjs.cloudflare.com\Bacon.min.js">
      <Link>PaketScripts\Bacon.min.js</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\cdnjs.cloudflare.com\d3.min.js">
      <Link>PaketScripts\d3.min.js</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\cdnjs.cloudflare.com\intro.min.js">
      <Link>PaketScripts\intro.min.js</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\cdnjs.cloudflare.com\jquery.min.js">
      <Link>PaketScripts\jquery.min.js</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\fonts.gstatic.com\Zd2E9abXLFGSr9G3YK2MsDR-eWpsHSw83BRsAQElGgc.ttf">
      <Link>PaketScripts\Zd2E9abXLFGSr9G3YK2MsDR-eWpsHSw83BRsAQElGgc.ttf</Link>
    </EmbeddedResource>
    <EmbeddedResource Include="..\..\paket-files\httpassets\fonts.gstatic.com\zN7GBFwfMP4uA6AR0HCoLQ.ttf">
      <Link>PaketScripts\zN7GBFwfMP4uA6AR0HCoLQ.ttf</Link>
    </EmbeddedResource>
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\..\lib\Http\HttpFree.fsproj" />
    <ProjectReference Include="..\..\lib\Prelude\Prelude.fsproj" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="mscorlib" />
    <Reference Include="System" />
    <Reference Include="System.Configuration.Install" />
    <Reference Include="System.Core" />
    <Reference Include="System.Data" />
    <Reference Include="System.Data.DataSetExtensions" />
    <Reference Include="System.Data.Linq" />
    <Reference Include="System.Numerics" />
    <Reference Include="System.ServiceProcess" />
    <Reference Include="System.Transactions" />
  </ItemGroup>
  <Import Project="..\..\.paket\Paket.Restore.targets" />
</Project>
btrepp commented 6 years ago

Installing net framework 4.7.1 allows it to progress (on the server), so that can potentially be a workaround, but it looks like maybe net461 target is pulling in newer dependencies?

github-actions[bot] commented 5 months ago

Due to lack of recent activity, this issue has been labeled as 'stale'. It will be closed if no further activity occurs within 30 more days. Any new comment will remove the label.

github-actions[bot] commented 4 months ago

This issue will now be closed since it has been labeled 'stale' without activity for 30 days.