0

I know that to build means either to compile from source code or the artifact itself. But what is an assembly? I tried to search but could not find the difference.

E.g. in .NET, assemblies are EXE files but isn't that what I get when I build the app? Isn't it the build?

EDIT: I mean build as a noun (the result of the build process).

nalply
  • 26,770
  • 15
  • 78
  • 101
KhDonen
  • 289
  • 4
  • 13

2 Answers2

0

Take a look here What are .NET Assemblies?. The output of the build is your assembly, so if you had a class library within your project called MyClassLib, then you would get MyClassLib.DLL when you build your application. So, the build process is what creates the assembly

Community
  • 1
  • 1
Christian Phillips
  • 18,399
  • 8
  • 53
  • 82
  • Yes, but what about the build, meaning the output product (not the verb "to build") – KhDonen Jun 09 '13 at 09:37
  • When you say 'build', you mean Build -> Build Solution, right? – Christian Phillips Jun 09 '13 at 09:43
  • Yes, but build is 1) the process. 2)the result. E.g. At work I say, what build is on that machine?. What is the difference between an assembly and the build? – KhDonen Jun 09 '13 at 09:45
  • "What build is on that machine" could mean a host of different things, for example, you could have an Assembly that has a versioning identifier, so you could be referring to the version installed on a server etc? You could have an application with multiple class libraries, console application etc and the build could refer to the application as a whole - and this application could have one or more assemblies. You may ship an Assembly onto the servers to store in the GAC to be used by different projects, you might be referring to the version in the GAC? – Christian Phillips Jun 09 '13 at 09:54
  • Usually we just say, "this build is old", saying that the app was deployed week ago. But I just do not know what an assembly is. – KhDonen Jun 09 '13 at 09:56
  • That probably means the version that's been deployed onto the server is old. Lets say you have a console application console1 and you have separate class libraries called MyLib1, MyLib2, you would build this which would give console1.exe and MyLib1.dll, MyLib2.dll and move these assemblies to the server. You then continue to work locally on your project, adding new features etc. The build on the server is now an out-of-date version since you have added new features locally, and not deployed to the server. Did you look at the link provided for an explanation of what an assembly is? – Christian Phillips Jun 09 '13 at 10:02
  • @KhDonen An assembly is one particular thing. It is one .dll or one .exe for the .NET platform - and the vendor, Microsoft, has specifically named it so. A build is a term that's a bit more loose. Usually it refers to the entire software, all the .dll, exe files, config files, and so on that make up the software, and a build refers to a particular version//release/configuration of that software. – nos Jun 09 '13 at 16:48
0

If there were any standard I would accept for an authoritative definition of what a build is, it would be my own. My reason for saying this is that I have a more comprehensive view than most people living, though there are a few in retirement in Florida to whom I might bow.

As usage commands the language, the usage and definition of a 'software build' has evolved over time: Today, it would be referred to as 'the product,' or the result of a production process, or in the abstract sense, that process itself. So originally it referred to either the construction process or the product of the final phase of production. It was usually associated with a batch process (process in the sense of the instance of a module loaded into memory which has finite boundaries and is tracked by the operating system) or a job identification number. For that reason, the number on the "build" was often requested, many times to associate it with a date in order to correlate it with corrective actions. Sometimes the build was recorded in a sequential log entry in an authoritative journal along with a date and a brief description of the changes during that period.

I find it curious that this entry is tagged with both the keywords 'language-agnostic' and 'build.' It is practically self-defining: While an assembly or a compilation could only be those processes or the products therefrom, a build may require some initialisation data or context surrounding and or supporting the including compilations and becoming a part of the end product.

When one builds a house, the output is a house: A software build may have some of the same characteristics; for some, an edifice without doors or windows is not a house but such a resulting structure can be called a build -- likewise the set of compilations producing the principal modules of the product can be called a build.

I would not expect to be a build to be a precise term: Rather, it is the set of procedures and their results followed on one occasion to produce a particular product. But it merits noting that a build may include modules from several compilations and indeed compilations from several different language -- and even some assembly. Since the output or product can differ as a result, a part of that build may even be comprised of some procedural scripting and/or job control language as well as compiled or assembled components.

In short, a software build is the set of procedural elements involved in producing a certain product on a particular occasion and/or the resulting product itself, referred to for the purpose of identifying the contextual environment, issues addressed and costs involved in a job, order, task, package, directive or logged schedule in terms of all forms of resource required and expended.