views:

129

answers:

3

When going through some of my applications in the past, I have noticed that compiled into the assembly is information such as where my project is, my username (which happened to be my full name, not my online handle) in Windows, and honestly I'm not sure what else.

Now I know the primary reason of this is when compiled under Debug, as this was file locations to the source files or pdb files (can't recall which).

The question is, what other "personally identifiable" information can end up in compiled assemblies and what can be done to prevent this from ending up in the assembly?

I assume if I simply set the project to Release mode to disable debugging symbols in the compiled assembly, this would achieve my goal, however I'm still curious if anything else I am missing.

I generally have no issue with people knowing I made something, but it did kind of irk me that my full name was in my distributed assemblies without my knowledge.

A: 

You should also take care with you XML documentation files, as they can hold "sensitive" information (as a programmer joke, or worse).

Rubens Farias
+1  A: 

All of that information is in Visual Studio under Project/Properties/Application/Assembly Information. Most of it is optional. Just blank out what you don't want in the assembly.

Robert Harvey
And just for Clarification, am I right in assuming directory structure of my project will not be in the assembly if in Release mode?
Aequitarum Custos
AFAIK there is no directory structure stored in the actual assembly, unless you want to count those places where you have directories hardcoded, or you are reading them from an XML file, configuration strings, etc.
Robert Harvey
BTW this dialog just modifies AssemblyInfo.cs, so you can modify this file by hand if you wish.
Robert Harvey
If you create pdb files, the full path to the pdb is included in the assembly.
0xA3
Thanks divo for clearing that up.
Aequitarum Custos
Just to clarify, the full path (possibly including your username) will be included in release mode and not only in debug mode, just as long as pdb files are generated by the compiler.
0xA3
+1  A: 

Depending on your VS setup, it's possible that you might have identifying information in the assembly information (AssemblyInfo.cs). If you publish via ClickOnce, then there is also the publish information which you can get to from the Publish tab. Both of these tags are completely configurable.

It's also possible that you have a license file for a 3rd-party product that contains identifying information, which must be distributed with the app, either as an external file or embedded resource; if so, there's probably not much you can do about it other than bring it up with the vendor.

Aside from these items, I can't think of any other reason why personal information would be compiled into an assembly. Debug information only goes in the PDB file - without that, you can't get symbols or line numbers. This applies to both debug and release mode.

Aaronaught