2
votes

Good afternoon,

I'm new to VSTS Build Management. I'm attempting to take our current solution (which builds fine on our dev machines) and get a successful build within VSTS Build Manager. I'm failing horribly so far and would like just a direction i should be looking as i bet this is some simple configuration that is missing either within VSTS or within my solution.

I have the following structure in source control

  1. $/Core/Core/Solution <- .sln lives here
  2. $/Core/Core/Solution/assemblies <- 3rd party DLL here
  3. $/Core/Core/Solution/Project/ <- .csproj lives here

My projects reference the DLL in the assemblies folder whihc is checked into source control and sits at the root with the .sln file

In my .csproj file i can verify that it contains the following entry (I'm going to focus on one of the DLL's i'm trying to reference, however multiple DLLs in the assemblies folder are giving me trouble)

<Reference Include="ScientiaMobile.WurflCloud">
   <HintPath>..\assemblies\ScientiaMobile.WurflCloud.dll</HintPath>
</Reference>

When taking a look at the "Get Sources" Logs i see the following for the assemblies folder:

> 2018-03-18T00:27:00.1610080Z D:\a\3\s\assemblies:
> 2018-03-18T00:27:00.1610395Z Getting README.md

There are about a dozen other DLL's in that folder that it does not seem to be pulling down for source control (unless i am missing something)

I have even attempted to provide MSBuild Arguments for the Build Solution phase of the VSTS Build:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\" /p:ReferencePath="..\assemblies"

Still i get the following error:

018-03-18T00:28:28.2671124Z ##[error]Project\Global\Wurfl.cs(5,7): Error CS0246: The type or namespace name 'ScientiaMobile' could not be found (are you missing a using directive or an assembly reference?)

When looking at the Build Solution logs i do see many attempts to locate the reference:

2018-03-18T00:28:22.7512305Z For SearchPath "..\assemblies". 2018-03-18T00:28:22.7512558Z Considered "..\assemblies\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7512735Z Considered "..\assemblies\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7512882Z Considered "..\assemblies\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7513015Z For SearchPath "{HintPathFromItem}". 2018-03-18T00:28:22.7513176Z
Considered "..\assemblies\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7513310Z For SearchPath "{TargetFrameworkDirectory}". 2018-03-18T00:28:22.7513474Z
Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.2\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7513695Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.2\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7514373Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.2\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7514564Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.2\Facades\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7514733Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.2\Facades\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7515106Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.6.2\Facades\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7515281Z For SearchPath "{AssemblyFoldersFromConfig:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\AssemblyFolders.config,v4.6.2}". 2018-03-18T00:28:22.7515458Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7515656Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7515824Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7516021Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SqlDb\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7516201Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SqlDb\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7516385Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SqlDb\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7516593Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7516766Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7516958Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7517133Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.5\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7517505Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.5\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7517737Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.5\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7517914Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VSSDK\VisualStudioIntegration\Common\Assemblies\v4.0\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7518118Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VSSDK\VisualStudioIntegration\Common\Assemblies\v4.0\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7518298Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VSSDK\VisualStudioIntegration\Common\Assemblies\v4.0\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7518536Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7518711Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7518877Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7519067Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.5\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7519238Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.5\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7519438Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.5\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7519615Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.0\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7519809Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.0\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7520771Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.0\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7520990Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.0\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7521223Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.0\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7521428Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v4.0\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7521650Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v2.0\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7521847Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v2.0\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7522044Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v2.0\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7522275Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VSSDK\VisualStudioIntegration\Common\Assemblies\v2.0\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7522567Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VSSDK\VisualStudioIntegration\Common\Assemblies\v2.0\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7522803Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VSSDK\VisualStudioIntegration\Common\Assemblies\v2.0\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7523005Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v2.0\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7523227Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v2.0\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7523603Z Considered "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\v2.0\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7523956Z For SearchPath "{Registry:Software\Microsoft.NETFramework,v4.6.2,AssemblyFoldersEx}". 2018-03-18T00:28:22.7524102Z Considered AssemblyFoldersEx locations. 2018-03-18T00:28:22.7524207Z For SearchPath "{AssemblyFolders}". 2018-03-18T00:28:22.7524340Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7524519Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7524675Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.0\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7524837Z Considered "C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7525200Z Considered "C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7525357Z Considered "C:\Program Files (x86)\Microsoft SQL Server\130\SDK\Assemblies\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7525532Z Considered "C:\Program Files\IIS\Microsoft Web Deploy V3\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7525682Z Considered "C:\Program Files\IIS\Microsoft Web Deploy V3\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7525829Z Considered "C:\Program Files\IIS\Microsoft Web Deploy V3\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7526012Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7526180Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7526341Z Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7526516Z Considered "C:\Program Files (x86)\WiX Toolset v3.11\SDK\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7526664Z Considered "C:\Program Files (x86)\WiX Toolset v3.11\SDK\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7526836Z Considered "C:\Program Files (x86)\WiX Toolset v3.11\SDK\ScientiaMobile.WurflCloud.exe", but it didn't exist. 2018-03-18T00:28:22.7526964Z For SearchPath "{GAC}". 2018-03-18T00:28:22.7527080Z Considered "ScientiaMobile.WurflCloud", which was not found in the GAC. 2018-03-18T00:28:22.7527457Z For SearchPath "{RawFileName}". 2018-03-18T00:28:22.7527577Z Considered treating "ScientiaMobile.WurflCloud" as a file name, but it didn't exist. 2018-03-18T00:28:22.7527691Z For SearchPath "bin\Release\". 2018-03-18T00:28:22.7527807Z Considered "bin\Release\ScientiaMobile.WurflCloud.winmd", but it didn't exist. 2018-03-18T00:28:22.7527957Z Considered "bin\Release\ScientiaMobile.WurflCloud.dll", but it didn't exist. 2018-03-18T00:28:22.7528082Z Considered "bin\Release\ScientiaMobile.WurflCloud.exe", but it didn't exist.

So obviously the build fails.

My questions are what am i missing to get a reference pulled in correctly when dealing with 3rd party DLL in a folder outside of the project but checked in to source control. Specifically i need to know what i need to do to get this going in VSTS Build as this setup works just fine in Visual Studio. A more broad question i have is what is the best practice to using and referencing 3rd party DLLs that facilitiate the VSTS Build process finding what it needs?

Thanks for any help you can give.

2
Is your NuGet.config set up to pull from your Package Management feed?Daniel Mann
So the NuGet.config at the root of my solution has one line: <add key="disableSourceControlIntegration" value="true" />, however my solution is setup to reference this feed and does restore from this VSTS Packages feed. In the Nuget Restore step logs i do see references to CredentialProvider and do see it attempting to do something with the VSTS Packages feed. No references after that point in terms of actually getting the package.Nugs
When you say "your solution" is set up to reference the feed, do you mean you added the feed within Visual Studio? Because that's not the same as configuring your project -- nuget.config controls that.Daniel Mann
@DanielMann Yes, that is what i meant. Clearly i have not configured this to function outside of a VS build. I guess a few questions come up from your question to me. 1) Should my nuget.config for the solution have all nugets used by the solution or just my VSTS Packages feed packages? 2) If it currently holds no references as you described, how then is it successful in getting all the other NuGet package not found in the VSTS Packages feed 3) Should the nuget.config file be pushed to source control even if the VSTS build definition is referencing the .sln file?Nugs
Think i got the answer to at least one of those questions: docs.microsoft.com/en-us/vsts/build-release/tasks/_shared/…Nugs

2 Answers

0
votes

You can specify the VSTS feed in NuGet task:

enter image description here

Otherwise, you need to select Feeds in my NuGet.config option.

0
votes

Let's try to solve this.

1 - Change and test your build

Change your build definition to clean sources. So that you start fresh. Run your build. It will fail, I know. Take a look at the get sources step and search in the log if all your files are being downloaded.

2 - Your assemblies folder

$/Core/Core/Solution/assemblies <- 3rd party DLL here Apparently use are using TFVC. So, check that the assemblies folder has permission set for (allowing) for Project Build Service and for Project Collection Build Service. The minimum permission is to read. But I would give them full permission if not set, or denied.

When these users have no permission, the build system simply does not download your DLLs.

3 - Check how you configured your workspace on build definition

Assuming you are using TFVC, at your build definition, take a look at the "Get sources" step. Your workspace settings must map the same structure as they are in stored in the repo.

enter image description here

It not necessarily has to be mapped as I should in the image, but you have to make sure that you end up with a local source structure that respects your server structure, like:

  • /
  • /assemblies
  • /project

You will need this so that your instruction in .csproj can find your dll:

..\assemblies

<Reference Include="ScientiaMobile.WurflCloud">
   <HintPath>..\assemblies\ScientiaMobile.WurflCloud.dll</HintPath>
</Reference>