EntLib 5.0 , TFS and .Refresh Files

Topics: General discussion
Feb 14, 2011 at 10:50 PM
Edited Feb 14, 2011 at 10:53 PM

Hello All,

I'm migrating one website from framework 2 to 4, so the enterprise libraries from version 2 to 5. But I've been struggling these days with one issue related TFS and EntLib 5.0, and the so infamous .Refresh Files. 

Problem

the webiste used  the version 2 of the entlib, with this version I just added the references to the web site and these  .DLL and the .Refresh files appeared on the bin folder, that was okay.

There was a common issue about if any developer builds the website, VS automatically checks out the file(adding a lock), So at the time I just removed the .refresh file from the bin folder and source control, that used to fix the issue, because it seems that VS was using the "refresh" file to build, instead the DLL.

Now with this version there is a strange behavior: when i add the reference for the EntLib 5 to the website,  TFS only adds the ".refresh" file, ignoring the dll. Now when a developer builds VS checks out the file, but i cannot remove the ".refresh" files because then the website won't recognize the reference.

I say "strange" behavior, because I got other assemblies and the reference is over directly the assembly not to the ".refresh" file, like for this case for EntLibs.

This probably be a noob, reference question, so any tip can be helpful about something i'm missing.

Environment:

Project type: Website (not WAP) 

Framework: 4.0

VS:2010

TFS: 10 standard.

EntLib:5.0

Thanks in advanced for all the help!!!

Feb 15, 2011 at 4:51 AM

I tried to reproduce your scenario by adding an entlib assembly references into a web app but unfortunately the .dll file has been added in the bin folder (not only the .refresh file). Have you tried manually copy and paste the assembly in your web app bin folder?

Gino Terrado
Global Technologies and Solutions
Avanade, Inc.
entlib.support@avanade.com

Feb 15, 2011 at 6:07 AM
Edited Feb 15, 2011 at 1:35 PM

hey Gino,

I appreciate your quick reply. some points I will like to add to my  my case:

1)The assembly and the refresh files are  added into the bin folder like you mentioned, but the .refresh file is the only file added to the source control.(in TFS), so when a developer builds the application(some how these are checked out), where on my opinion it shouldn't modified ergo checked out.

2)the entlibs assemblies i set them on a specific folder to avoid to install the pack, so its not taken from the gac. (we used to manage this way with the old entlib v2.0)

3)I tried to open the solution file with notepad, since is a web site project(it does not contain its own project file), and it only has the references for the other  projects but not for the "third party assemblies" like entlibs. As you may noticed in "projectReferences" there is no track of any assembly that its not from the solution.

 

Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Atomic", "Atomic", "{706E6663-0A7C-4779-91DC-66A40F98CA39}"
	ProjectSection(WebsiteProperties) = preProject
		SccProjectName = "SAK"
		SccAuxPath = "SAK"
		SccLocalPath = "SAK"
		SccProvider = "SAK"
		TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.0"
		ProjectReferences = "{93129D80-C875-4316-86A8-50C4D6219D12}|FrameWork.dll;{741CB729-8606-436D-9856-042009543A1E}|
MasterSetupDS.dll;{E175B85F-BD6B-4EEB-9F77-A33FEB767DAE}|SecurityManagerBL.dll;{96433464-A912-4D43-8CE5-0C720E412E3E}|SecurityManagerDA.dll;
{EC2DCE53-D36D-4C68-B9AA-8A85D90F7336}|RoleManagement.dll;{EDC137AE-F93F-47ED-8F5F-3F13D0EFC17A}|RolloffsDS.dll;{E7FAD831-D013-474F-820E-8ECE2F73F70D}|PaymentDS.dll;
{4288997D-47A4-404C-9362-F86AB977D23C}|AdProDS.dll;{3E790FE4-C3B2-4FEC-B276-CDA1B39677AE}|ImportTemplates.dll;{B8BB05B5-B4D1-4906-BCA0-D87D08EC9D12}|CustomControls.dll;
{3DB6F6C1-77A3-4D28-846F-B08843731D7E}|Diagnostics.dll;{5C2FBD39-2A00-4A6E-850B-1A89AD86A80B}|ReportsDS.dll;{5C388F6E-41AA-4345-9C66-4992F9118466}|AutomationDS.dll;
{95C118A4-AD89-4A82-8DA2-961B34E445CC}|PplGenericDS.dll;{81D48FDE-139D-4F03-BDC1-FE285C9B0A1A}|CampaignDS.dll;{BD42E2BC-D7E9-44B7-9FB5-A28AE00D8E1B}|GeneralDS.dll;
{FBD250DB-8BEC-481B-AD4A-43356FA1FBBC}|SummaryDS.dll;{5AF3C511-D010-4A44-908F-B0AE55424EF8}|SecurityManagerDS.dll;
{257CC388-A0BA-4B6F-82EE-CE0E666179D0}|PartnerRegistrationDS.dll;{946ADDFE-DC63-451A-8BB4-3651876DC778}|SearchDS.dll;{F1B5D937-A37A-48FB-9FF5-987D8E289EE7}|PerlDS.dll;
{4F4ACE22-84B4-4243-809B-005C3F047A08}|DashboardDS.dll;{2767A573-C0A4-4532-8157-452C85CAF7F0}|AuditTraillDS.dll;{8551A075-3212-4A28-8778-0F42FAC1D2B9}|DeveloperToolsDS.dll;
{63DAE36B-9104-4C4A-9B34-974660B1A656}|WebServiceDS.dll;{F79B4D30-5331-488A-B143-80094F2220C8}|AccrualsDS.dll;{C960B387-3279-4885-BA1E-4A2313A69008}|AdjustmentDS.dll;
{D047933D-17A2-4DA0-B30D-6F2EE2766C8C}|ClaimsDS.dll;{66C2B67F-1470-4C45-9475-0E283734D586}|PriorApprovalDS.dll;{BDA85FB5-19EA-48C4-B81B-42561F6BAD8E}|TransactionStructs.dll;
{657F0F34-EACA-4B35-9DE4-EEC376D598A9}|ClientSetupDS.dll;{6815CF7F-EB8E-4429-BE4E-F0BF4C6E828B}|ProfileDS.dll;{ADCB736E-F60A-4509-9B4D-35B0107D5942}|DealDS.dll;
{274E13DF-7580-4F22-9B18-FAABD121F136}|OpportunityDS.dll;{8D3A8A6F-3DF2-43F2-97E3-922E54D830ED}|UserManagementDS.dll;
{9594FDF2-61F1-4214-9CB3-6F06FD68B0AE}|CustomerManagementDS.dll;{044A42FF-7E74-451B-ACE6-750FD1111EFB}|EncryptionDA.dll;{94F91688-B968-4267-96FE-E83B1CEB056C}|POSDS.dll;
{F8455421-83F8-46FD-B309-20C5B11E3A51}|ExternalCloudDS.dll;{7D30586D-C49C-42EA-85EF-449C0BEC14CB}|IncentiveManagerDS.dll;
{170D9CA6-B47C-44D4-9B96-12A2FDA5D60E}|BatchManager.dll;{BAF9CE2D-343B-4DD6-9EF6-CFA52FA90B11}|ClaimsDA.dll;{C9D03A29-1D71-4113-8205-E95E0AA86899}|ImportToDataSetFactory.dll;
{86E98D41-67B9-45FA-AB29-7CC92A9F1E74}|CustomerManagementBL.dll;{182C84E6-3032-4AC7-A443-9AADF8616D1E}|CustomerManagementDA.dll;
{1BFD6A9A-C4B6-4F59-91AB-53FBE40A27E0}|ExternalCloudBL.dll;{0261DF62-336C-4D21-B7D7-36381E5460CA}|ExternalCloudManagerDA.dll;
{73771DCE-5E9C-479A-AA9E-CD53C97159D6}|EmailManagerBL.dll;{CCB752FD-69D6-480D-B44E-207B987406D2}|Xlate.dll;{484E9C35-7400-41C0-B21C-8DD50405DDFC}|ClientSetupDA.dll;
{5044F5E5-FB89-4C79-ABE2-64ABF3C80BD0}|GeneralDA.dll;{54A9C048-EBC5-4012-BF9D-A95B35B9D7C1}|IncentiveManagerDA.dll;
{BAE3D229-1EC9-44FB-ABCE-4AFC08F9AE50}|RoleManagementDA.dll;{9A1EB800-FB9A-4520-85CC-F629F5658AB8}|PaymentDA.dll;{8DE60406-E7E7-4173-9409-BD217656C2E3}|MasterSetupDA.dll;
{785C019C-1926-4891-86FD-490EA2479A88}|PriorApprovalDA.dll;{A1695A5C-F16B-4D3A-A139-790AE3FCCA19}|TransactionDA.dll;{57E04F8E-D530-42F6-B4EB-AB69F4C78228}|Proxy.dll;
{41ACA280-E76D-4ED9-9A69-522BA70BB8CD}|AttachmentDS.dll;{9FA475E0-AE67-4B94-B0E7-841BF71BF57C}|AttachmentBL.dll;{124B9602-EA4F-4702-ADD2-C6021B825B4F}|DealDA.dll;
{67016597-B873-443F-AB22-B7EA28558878}|Cryptography.dll;{31100260-1E83-4614-AE07-66A70930748A}|UserManagementDA.dll;{B29B2FB7-33C6-4600-8297-3DCC36CF809A}|GeneralBL.dll;
{CBBC2624-4F31-4821-9821-2AE6E25EF484}|ClientSetupBL.dll;{1F0C6CB5-BE42-462A-A749-731622A5962C}|IncentiveManagerBL.dll;
{7445E93A-AB39-425E-8ED2-9ABDF2F19CB1}|UserManagementBL.dll;{4EBD3A80-9B29-4EB8-9915-185BECAD4D0B}|PaymentBL.dll;{A738B01D-A9BC-4654-AC84-E899C0B35A01}|ClaimsBL.dll;
{AF7B3ED0-9BF3-4076-8116-E9FB7E14C4A3}|PriorApprovalBL.dll;{580D949A-2E17-4CB7-B866-B8BAFFA47849}|DealBL.dll;"
		Debug.AspNetCompiler.VirtualPath = "/Atomic"
		Debug.AspNetCompiler.PhysicalPath = "Atomic\"
		Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\Atomic\"
		Debug.AspNetCompiler.Updateable = "true"
		Debug.AspNetCompiler.ForceOverwrite = "true"
		Debug.AspNetCompiler.FixedNames = "false"
		Debug.AspNetCompiler.Debug = "True"
		Release.AspNetCompiler.VirtualPath = "/Atomic"
		Release.AspNetCompiler.PhysicalPath = "Atomic\"
		Release.AspNetCompiler.TargetPath = "PrecompiledWeb\Atomic\"
		Release.AspNetCompiler.Updateable = "true"
		Release.AspNetCompiler.ForceOverwrite = "true"
		Release.AspNetCompiler.FixedNames = "false"
		Release.AspNetCompiler.Debug = "False"
		VWDPort = "51713"
		DefaultWebSiteLanguage = "Visual C#"
	EndProjectSection
EndProject.

So i was wondering where is this reference saved?, probably if I manually modify that can get the right.

I appreciate thanks alot
Feb 15, 2011 at 7:29 AM

What I was missing earlier is that I did not try to check-in in TFS. Now that I have succesfully reproduced your problem I agree that once you check-in those entlib assemblies, only the .refresh file will be checked-in. =)

So what I did to be able to check-in ONLY the entlib assemblies is by manually adding the assemblies in my web app bin folder thru Source Control Explorer and then checked-in. Hope this helps. 

Gino Terrado
Global Technologies and Solutions
Avanade, Inc.
entlib.support@avanade.com

Feb 15, 2011 at 1:54 PM
Edited Feb 15, 2011 at 1:56 PM

Hey Gino,

thanks again for your reply. I'm happy you could reproduce the issue.

I opened the .refresh file and this is what it contains:

 

 

Bin\Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll

 

So I'm wondering in two things:

 

1)where is saved in the project, the external references?. I mean i got itextsharp assembly and this one, TFS didn't add the .refresh file (i think it was not even created). See image below and from here it takes me to the second point.

2)what does it activate to "check out" the reference everytime i try to build, since the issue is that i think it shouldn't check out the file just because i'm building.(i know this is not a entlib issue per se)

 

Photobucket

 

Once again I appreciate your time and knowledge

Feb 16, 2011 at 1:01 AM

Since we're not the best person to answer this question, I'll refer you to the Team Foundation Server forum where you might be able to get the exact answer you're looking for.  But what Gino suggested is what we usually do, we check in the assemblies we require in the source control and from there, we add reference to those assemblies.  That doesn't give us the .refresh files.

 

Sarah Urmeneta
Global Technologies and Solutions
Avanade, Inc.
entlib.support@avanade.com