Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Publish executor produces "Found multiple publish output files with the same relative path" #766

Open
benpsnyder opened this issue Oct 3, 2023 · 0 comments
Labels
bug Something isn't working needs-triage This issue has yet to be looked over by a core team member

Comments

@benpsnyder
Copy link
Contributor

Current Behavior

In some (not all) of my projects, I am not able to publish without adding this to Directory.Build.targets

<!--
  This file is imported late in the build order.
  Use it to override properties and define dependent properties.
-->
<Project>
...
	<Target Name="RenameConflictingFiles" BeforeTargets="PrepareForPublish">
		<Message Text="Renaming conflicting files..." Importance="high" />
		<Move SourceFiles="packages.lock.json" DestinationFiles="packages.lock.json.bak" />
		<Move SourceFiles="project.json" DestinationFiles="project.json.bak" />
	</Target>
	<Target Name="RestoreConflictingFiles" AfterTargets="Publish">
		<Message Text="Restoring conflicting files..." Importance="high" />
		<Move SourceFiles="packages.lock.json.bak" DestinationFiles="packages.lock.json" />
		<Move SourceFiles="project.json.bak" DestinationFiles="project.json" />
	</Target>

...
</Project>

Error messages

	[<project-root>/libs/core/shared/compat/sdks/reporting/<COMPANY>.Compat.Sdks.Reporting.csproj]
         <COMPANY>.Core.Shared.DbConnections.Hyperscale -> <project-root>/dist/libs/core/shared/db-connections/hyperscale/net8.0/<COMPANY>.Core.Shared.DbConnections.Hyperscale.dll
         <COMPANY>.Compat.Sdks.Encryption.Twofish -> <project-root>/dist/libs/core/shared/compat/sdks/encryption/twofish/net8.0/<COMPANY>.Compat.Sdks.Encryption.Twofish.dll
         <COMPANY>.Core.Shared.Analyzers -> <project-root>/dist/libs/core/shared/analyzers/net8.0/<COMPANY>.Core.Shared.Analyzers.dll
         <COMPANY>.Compat.Sdks.Account -> <project-root>/dist/libs/core/shared/compat/sdks/account/net8.0/<COMPANY>.Compat.Sdks.Account.dll
         <COMPANY>.Compat.Sdks.Common -> <project-root>/dist/libs/core/shared/compat/sdks/common/net8.0/<COMPANY>.Compat.Sdks.Common.dll
         <COMPANY>.Compat.Sdks.Reporting -> <project-root>/dist/libs/core/shared/compat/sdks/reporting/net8.0/<COMPANY>.Compat.Sdks.Reporting.dll
         <COMPANY>.Core.Shared.Domain -> <project-root>/dist/libs/core/shared/domain/net8.0/<COMPANY>.Core.Shared.Domain.dll
         <COMPANY>.Core.Partnnr.Domain -> <project-root>/dist/libs/core/partnnr/domain/net8.0/<COMPANY>.Core.Partnnr.Domain.dll
         <COMPANY>.Core.Connect.Domain -> <project-root>/dist/libs/core/connect/domain/net8.0/<COMPANY>.Core.Connect.Domain.dll
         <COMPANY>.Core.Connectivity.Domain -> <project-root>/dist/libs/core/connectivity/domain/net8.0/<COMPANY>.Core.Connectivity.Domain.dll
         <COMPANY></COMPANY>.Core.Reporting.Domain -> <project-root>/dist/libs/core/reporting/domain/net8.0/<COMPANY>.Core.Reporting.Domain.dll
       /usr/local/share/dotnet/sdk/8.0.100-rc.1.23463.5/Microsoft.Common.CurrentVersion.targets(4702,5): warning MSB3026: Could not copy "<project-root>/dist/intermediates/libs/core/shared/db-entities/obj/net8.0/<COMPANY>.Core.Shared.DbEntities.dll" to "<project-root>/dist/libs/core/shared/db-entities/net8.0/<COMPANY>.Core.Shared.DbEntities.dll". Beginning retry 1 in 1000ms. The process cannot access the file '<project-root>/dist/intermediates/libs/core/shared/db-entities/obj/net8.0/<COMPANY>.Core.Shared.DbEntities.dll' because it is being used by another process.  [<project-root>/libs/core/shared/db-entities/<COMPANY>.Core.Shared.DbEntities.csproj]
         <COMPANY>.Core.Shared.DbEntities -> <project-root>/dist/libs/core/shared/db-entities/net8.0/<COMPANY>.Core.Shared.DbEntities.dll
         <COMPANY>.Core.Shared.Common -> <project-root>/dist/libs/core/shared/common/net8.0/<COMPANY>.Core.Shared.Common.dll
         <COMPANY>.Core.Connect.DbEntities -> <project-root>/dist/libs/core/connect/db-entities/net8.0/<COMPANY>.Core.Connect.DbEntities.dll
         <COMPANY>.Core.Partnnr.DbEntities -> <project-root>/dist/libs/core/partnnr/db-entities/net8.0/<COMPANY>.Core.Partnnr.DbEntities.dll
         <COMPANY>.Core.Partnnr.Common -> <project-root>/dist/libs/core/partnnr/common/net8.0/<COMPANY>.Core.Partnnr.Common.dll
         <COMPANY>.Core.Connectivity.DbEntities -> <project-root>/dist/libs/core/connectivity/db-entities/net8.0/<COMPANY>.Core.Connectivity.DbEntities.dll
         <COMPANY>.Core.Reporting.DbEntities -> <project-root>/dist/libs/core/reporting/db-entities/net8.0/<COMPANY>.Core.Reporting.DbEntities.dll
         <COMPANY>.Core.Connect.Common -> <project-root>/dist/libs/core/connect/common/net8.0/<COMPANY>.Core.Connect.Common.dll
         <COMPANY>.Core.Shared.Authorization -> <project-root>/dist/libs/core/shared/authorization/net8.0/<COMPANY>.Core.Shared.Authorization.dll
         <COMPANY>.Core.Connectivity.Common -> <project-root>/dist/libs/core/connectivity/common/net8.0/<COMPANY>.Core.Connectivity.Common.dll
         <COMPANY>.Core.Reporting.Common -> <project-root>/dist/libs/core/reporting/common/net8.0/<COMPANY>.Core.Reporting.Common.dll
         <COMPANY>.Core.Connectivity.Primo -> <project-root>/dist/libs/core/connectivity/primo/net8.0/<COMPANY>.Core.Connectivity.Primo.dll
         <COMPANY>.Core.Connectivity.Chi -> <project-root>/dist/libs/core/connectivity/chi/net8.0/<COMPANY>.Core.Connectivity.Chi.dll
         <COMPANY>.Core.Connectivity.Isibox -> <project-root>/dist/libs/core/connectivity/isibox/net8.0/<COMPANY>.Core.Connectivity.Isibox.dll
         <COMPANY>.Core.Connectivity.Gocomet -> <project-root>/dist/libs/core/connectivity/gocomet/net8.0/<COMPANY>.Core.Connectivity.Gocomet.dll
         <COMPANY>.Core.Connectivity.Cargospectre -> <project-root>/dist/libs/core/connectivity/cargospectre/net8.0/<COMPANY>.Core.Connectivity.Cargospectre.dll
         <COMPANY>.Core.Connectivity.Raft -> <project-root>/dist/libs/core/connectivity/raft/net8.0/<COMPANY>.Core.Connectivity.Raft.dll
         <COMPANY>.Core.Ms.Sla.ConnEvents -> <project-root>/dist/apps/core/ms/sla/conn-events/net8.0/<COMPANY>.Core.Ms.Sla.ConnEvents.dll
       /usr/local/share/dotnet/sdk/8.0.100-rc.1.23463.5/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ConflictResolution.targets(112,5): error NETSDK1152: Found multiple publish output files with the same relative path: <project-root>/libs/core/shared/authorization/packages.lock.json, <project-root>/apps/core/ms/sla/conn-events/packages.lock.json, <project-root>/libs/core/shared/authorization/project.json, <project-root>/apps/core/ms/sla/conn-events/project.json. [<project-root>/apps/core/ms/sla/conn-events/<COMPANY>.Core.Ms.Sla.ConnEvents.csproj]

Expected Behavior

Ignore packages.lock.json and project.json from libs

(BTW, I did try other "proper" techniques to ignore the files but to no avail. 5 hours of debugging later, I settled on the "move, move back" process shown in the solution)

Github Repo

No response

Steps to Reproduce

Perhaps only happens with .NET 8 publish process, vs .NET 7 or later.

Nx Report

Node   : 20.8.0
   OS     : darwin-arm64
   pnpm   : 8.8.0
   
   nx (global)             : 16.9.1
   nx                      : 16.9.1
   @nx/js                  : 16.9.0
   @nx/jest                : 16.9.0
   @nx/linter              : 16.9.0
   @nx/workspace           : 16.9.0
   @nx/angular             : 16.9.0
   @nx/cypress             : 16.9.0
   @nx/devkit              : 16.9.0
   @nx/esbuild             : 16.9.0
   @nx/eslint-plugin       : 16.9.0
   @nrwl/eslint-plugin-nx  : 16.9.1
   @nx/nest                : 16.9.0
   @nx/node                : 16.9.0
   @nx/plugin              : 16.9.0
   @nx/storybook           : 16.9.0
   @nx/vite                : 16.9.0
   @nx/web                 : 16.9.0
   @nx/webpack             : 16.9.0
   nx-cloud                : 16.4.0
   typescript              : 5.2.2

nx.json

{
  "$schema": "./node_modules/nx/schemas/nx-schema.json",
  "affected": {
    "defaultBase": "develop"
  },
  "cli": {
    "analytics": "72c4c923-4113-4bf2-923a-10a88abdd92f"
  },
  "generators": {
    "@nx-dotnet/core:app": {
      "language": "C#",
      "tags": "type:api",
      "template": "webapi",
      "testTemplate": "xunit"
    },
    "@nx-dotnet/core:lib": {
      "language": "C#",
      "template": "classlib",
      "testTemplate": "xunit"
    },
    "@nx/angular:application": {
      "e2eTestRunner": "cypress",
      "linter": "eslint",
      "style": "scss",
      "unitTestRunner": "jest"
    },
    "@nx/angular:component": {
      "style": "scss"
    },
    "@nx/angular:library": {
      "linter": "eslint",
      "strict": true,
      "unitTestRunner": "jest"
    }
  },
  "namedInputs": {
    "default": ["{projectRoot}/**/*", "sharedGlobals"],
    "production": [
      "default",
      "!{projectRoot}/**/*.stories.@(js|jsx|ts|tsx|mdx)",
      "!{projectRoot}/.storybook/**/*",
      "!{projectRoot}/tsconfig.storybook.json",
      "!{projectRoot}/eslint.config.js"
    ],
    "sharedGlobals": ["{workspaceRoot}/workspace.json", "{workspaceRoot}/nx.json", "{workspaceRoot}/tsconfig.base.json"]
  },
  "plugins": ["@nx-dotnet/core"],
  "targetDefaults": {
    "build": {
      "dependsOn": ["^build", "codegen", "^codegen"],
      "inputs": ["production", "^production"]
    },
    "build-storybook": {
      "inputs": [
        "default",
        "^production",
        "{workspaceRoot}/.storybook/**/*",
        "{projectRoot}/.storybook/**/*",
        "{projectRoot}/tsconfig.storybook.json"
      ]
    },
    "e2e": {
      "inputs": ["default", "^production"]
    },
    "lint": {
      "inputs": ["default", "{workspaceRoot}/.eslintrc.json", "{workspaceRoot}/eslint.config.js"]
    },
    "test": {
      "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"]
    }
  },
  "tasksRunnerOptions": {
    "default": {
      "options": {

      },
      "runner": "nx-cloud"
    }
  }
}

Failure Logs

No response

Additional Information

No response

@benpsnyder benpsnyder added bug Something isn't working needs-triage This issue has yet to be looked over by a core team member labels Oct 3, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working needs-triage This issue has yet to be looked over by a core team member
Projects
None yet
Development

No branches or pull requests

1 participant