Hrodger
Hrodger

Reputation: 1278

Project builds but can't publish

I have an MVC project that for an uknown reason refuses to publish to a local folder in the PC.

The log says the following:

3>------ Publish started: Project: Admin, Configuration: Release Any CPU ------
3>Connecting to D:\Deploys...
3>Project "Admin.csproj" (GatherAllFilesToPublish target(s)):
3>    Building with tools version "14.0".
3>    Target "ValidateMSBuildToolsVersion" skipped. Previously built unsuccessfully.
3>Done building project "Admin.csproj" -- FAILED.
3>
========== Build: 2 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

I haven't had a problem debugging on either release or debug config.

Upvotes: 25

Views: 23446

Answers (12)

PeterE
PeterE

Reputation: 1

I had similar problem with project using:

  1. .NET 4.7.2
  2. MVC5 solution
  3. All unit test files with file name format: Tests.cs like "HomeControllerTest.cs"
  4. Microsoft Visual Studio Enterprise 2019, Version 16.6.4

For that project, the following Azure DevOps Pipeline settings works:

MSBuild arguments:

/t:Publish;Build /p:PublishDir="$(build.artifactstagingdirectory)\" /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:PackageLocation="$(build.artifactstagingdirectory)\"

Visual Studio Test Platform Installer: Latest stable

Select test using: Test assemblies

Testfiles:
*Tests.dll
!**\obj*

Searchfolder:$(System.DefaultWorkingDirectory)

Test results folder: $(Agent.TempDirectory)\TestResults

Test platform version: Installed by Tools Installer

Other console options: /Framework:Framework45 /Diag:log.txt /Logger:console

Build platform: $(BuildPlatform)

Build configuration: $(BuildConfiguration)

=== YAML

steps:

  • task: VSBuild@1 displayName: 'Build solution ***.sln' inputs: solution: '$(Parameters.solution)' msbuildArgs: '/t:Publish;Build /p:PublishDir="$(build.artifactstagingdirectory)\" /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:PackageLocation="$(build.artifactstagingdirectory)\" ' platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' clean: true maximumCpuCount: true restoreNugetPackages: true createLogFile: true

steps:

  • task: VisualStudioTestPlatformInstaller@1 displayName: 'Visual Studio Test Platform Installer' inputs: versionSelector: latestStable

steps:

  • task: VSTest@2 displayName: 'VsTest - testAssemblies' inputs: testAssemblyVer2: | *Tests.dll !**\obj* vsTestVersion: toolsInstaller otherConsoleOptions: '/Framework:Framework45 /Diag:log.txt /Logger:console' platform: '$(BuildPlatform)' configuration: '$(BuildConfiguration)' diagnosticsEnabled: true

steps:

  • task: PublishTestResults@2 displayName: 'Publish Test Results **/TEST-*.xml' inputs: testResultsFormat: VSTest

Upvotes: 0

Monique Altero
Monique Altero

Reputation: 76

I had a similar problem. The project was building okay but when I published it Azure send me errors.

My project target .NET framework was 4.6.2 version and I was upgrading Nugget packages, unfortunatelly I upgraded my .NET Compilers to last version and it wasnt compatible to my target .NET version.You should be able to see it here:

Description of .NET Compilers

My target framework

I fixed it by downgrading .NET Compilers to a version compatible to my .NET Framework (In my case, to use 4.6.2 framework I need to use .NET Compiller 2.10).

Upvotes: 0

Michael Radicella
Michael Radicella

Reputation: 1

Try removing the Microsoft.Net.Compilers Nuget package.

I had tried a lot of things, none successful. I did this and the publishing succeeded. To be sure, I restored my project from BitBucket to its original condition, tested to see the publishing failed, removed the nuget package again, and it worked.

Upvotes: 0

Ted Nyberg
Ted Nyberg

Reputation: 7391

I had switched to C# 7.3 in Properties > Build > Advanced, but accidentally only did so for the Debug configuration. When publishing (using Release configuration) it was still using C# 7.0, which lacked some of the language features I had used.

Errors weren't visible in the Error List pane, only in the Output pane.

Setting the language version to C# 7.3 for "All Configurations" solved it for me.

This was using current version of Visual Studio 2017, Microsoft.Net.Compilers package not included in project.

Upvotes: 0

Nacht
Nacht

Reputation: 3494

Try opening the solution with Visual Studio 2017

I had been building and publishing from Visual Studio 2015, as that is the version of Visual Studio that the Version Selector picked when I opened the solution file.

I tried opening my solution file from Visual Studio 2017 instead, and that succeeded in publishing.

Upvotes: 0

Jin Ginusuke
Jin Ginusuke

Reputation: 67

First, select the mode (Debug or Release). Then right click on the solution/project then select Clean. Then choose Rebuild. Then Publish.

Upvotes: 1

Omer Faruk KAYA
Omer Faruk KAYA

Reputation: 396

I had this problem in Asp.net Core 2 MVC 2.1 So there was no Microsoft.Net.Compilers in my solution. I tried to rebuild all projects, unload / load again but there was no change.

1) So, I have upgraded VS 2017 15.7.3 to 15.8.7
2) Then deleted all bin/release directory contents from each projects in solution.
3) Then deleted all obj directory contents from each projects in solution.
4) Then rebuilded all projects one by one.
Then tried to publish and it succeded.

Maybe if I tried from step 2 in old Visual Studio it would be succed.

Upvotes: 0

zanussi
zanussi

Reputation: 1316

I was able to resolve my issue altogether by removing the NuGet package "Microsoft.Net.Compilers", rather than downgrade to 2.4.0.

(For quite some time, the Publish error would disappear if I simply restarted VS, but eventually that stopped working.)

Upvotes: 1

Diego Ruiz de Chavez
Diego Ruiz de Chavez

Reputation: 21

downgrade "Microsoft.Net.Compilers" from v2.9.0 to v2.4.0 works like a charm

Upvotes: 1

jmdon
jmdon

Reputation: 1017

This just happened to me, it turned out to be a simple case of using an int in a ViewComponent call from a razor template, when that argument should have been a Guid. For some reason Intellisense didn't pick it up, I had to turn on detailed verbosity to see the error in the build process.

Upvotes: 0

eLGi
eLGi

Reputation: 100

Sorry for reopening the thread, but for me Cleaning the solution worked on .NET.Compilers v2.7 (Visual Studio 2015).

Upvotes: 2

Hrodger
Hrodger

Reputation: 1278

So I made it work.

The problem was the version of the "Microsoft.Net.Compilers". I downgraded from v2.6.1 to v2.4.0.

I don't know why so if someone knows it would be cool to know.

Upvotes: 67

Related Questions