Flexible Project-to-Project References |
- Flexible Project-to-Project References
- Ways to give feedback on Silverlight
- New Silverlight 4 Themes available–get the raw bits
- New Silverlight 4 Themes available–get the raw bits
- Silverlight Tip of the Day #10 – Converting Client IP to Geographical Location
- Windows Client Developer Roundup for 5/3/2010
- The fastest way to resize images from ASP.NET. And it’s (more) supported-ish.
- Silverlight Cream for May 02, 2010 -- #854
- Windows Client Developer Roundup for 5/3/2010
- Xml Document Transforms (XDT) for any XML file in your project
- Free WebCamps - North America, Asia and Europe - *Sign Up Now*
Flexible Project-to-Project References Posted: 03 May 2010 11:08 AM PDT My name is Amit Mohindra and I am a Program Manager with the Visual C++ IDE team. In this post I would like to talk about project-to-project references. In VS2010 release we moved the C++ build and project system to be based on MSBuild. There is an excellent article written by Marian Luparu detailing the change and advantages of the new build/project system (http://blogs.msdn.com/vcblog/archive/2008/11/20/printf-hello-msbuild-n.aspx). Project to Project references have existed ever since Visual Studio 6. However the term has evolved over the years. Native technologies used Project dependencies to define references prior to Visual Studio 8. With Visual Studio 8 native projects were able to define project to project references. "Project to Project references" defines the mechanism in which Project A creates a reference to Project B, by which Project A consumes the output of Project B to deliver on its functionality. This feature is consumed by users who have large source code bases, a solution with many large projects and input of one project is driven by the output of another project. Traditionally, there are three variables that control how project references work: · Ignore Import Library (Set On the Referenced project)Tells the linker not to try to link any .lib output generated from this build into any dependent project. This allows the project system to handle .dll files that do not produce a .lib file when built. If a project is dependent on another project that produces a DLL, the project system automatically will link the .lib file produced by that child project. This may not be needed by projects that are producing COM DLLs or resource-only DLLs; these DLLs do not have any meaningful exports. If a DLL has no exports, the linker will not generate a .lib file. If no export .lib file is present on the disk, and the project system tells the linker to link with this (missing) DLL, the link will fail. Use "Ignore Import Library" to resolve this problem. When set to "Yes", the project system will ignore the presence or absence of that .lib file and cause any project that is dependent on this project to not link with the nonexistent .lib file. · Link Library Dependencies (Set On the Referencing project)Gives you the choice of linking in the .lib files that are produced by dependent projects. Typically, you will want to link in the .lib file. If you don't want to consume the .lib file generated then just set this Linker setting to "False". · Use Library Dependency Inputs (Set On the Referencing project)In a large project, when a dependent project produces a .lib file, incremental linking is disabled. If there are many dependent projects that produce .lib files, building the application can take a long time. When this property is set to Yes, the project system links in the .obj files for .libs produced by dependent projects, thus enabling incremental linking. In this design however there were limitations and the design wasn't very flexible in allowing the project defining the reference to control the behavior. Consider the following very simple example:
- Project A defines project-to-project references to Project B and Project C (both Project B and C create .lib outputs). Project A wants to only consume the library output of Project B and not for Project C. o In VS2008, this was achieved by creating references to Project A with "Link Library Dependency" property set to "Yes" for Project A and subsequently setting "Ignore Import Library" for Project B to "No". § This approach however had a disadvantage in that if there was another Project D referencing Project B it would be limited by the "Ignore Import Library" property being set to "No". The scenario shown in diagram above was not achievable in VS2008. In VS2010 we have enabled the above scenario by supporting reference level metadata on the project references. Now you can set "Link Library Dependencies" and "Use Library Dependency Inputs" properties at the project reference level. To achieve the scenario above: - Project A will create a project reference to Project B and Project C - For the Project B set the "Link Library Dependencies" property to "False" - Project D will create a project reference to Project B and Project C. In this case the global defaults for the properties ("Link Library Dependencies" set to "True" and "Use Library Dependency Inputs" set to "False") will define the behavior. To set these properties you can use the "Framework and References" tab in the property page of the parent project (Project A) as follows:
It looks like the following in Project A.vcxproj: <ItemGroup> <ProjectReference Include="..\Project B\Project B.vcxproj"> <Project>{fcefddd7-fc28-490a-a937-ee8ce39c43d7}</Project> <Private>true</Private> <ReferenceOutputAssembly>true</ReferenceOutputAssembly> <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies> <LinkLibraryDependencies>false</LinkLibraryDependencies> <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs> </ProjectReference> <ProjectReference Include="..\Project C\Project C.vcxproj"> <Project>{687d125d-f004-4901-8654-725f65c93528}</Project> </ProjectReference> </ItemGroup>
This results in the following command-line for Project A:
Similarly for Project D:
It looks like the following in Project D.vcxproj:
<ItemGroup> <ProjectReference Include="..\Project B\Project B.vcxproj"> <Project>{fcefddd7-fc28-490a-a937-ee8ce39c43d7}</Project> </ProjectReference> <ProjectReference Include="..\Project C\Project C.vcxproj"> <Project>{687d125d-f004-4901-8654-725f65c93528}</Project> </ProjectReference> </ItemGroup>
This results in the following command-line for Project D:
Thanks, Amit Mohindra |
Ways to give feedback on Silverlight Posted: 03 May 2010 10:58 AM PDT There are a few ways to give feedback on Silverlight . I wanted to share my thoughts on them as some are obvious and some aren't. First and foremost, the team is currently (Apr-May 2010) conducting a public survey on the next version planning. We've put...( read more )...(read more) |
New Silverlight 4 Themes available–get the raw bits Posted: 03 May 2010 10:24 AM PDT A while back I posted a sneak peek preview of 3 new themes that we were working on for Silverlight 4 applications. Our team wanted to do more than just the overall base theme and provide the themes for the core, SDK and some Silverlight Toolkit controls...( read more )...(read more) |
New Silverlight 4 Themes available–get the raw bits Posted: 03 May 2010 10:24 AM PDT A while back I posted a sneak peek preview of 3 new themes that we were working on for Silverlight 4 applications. Our team wanted to do more than just the overall base theme and provide the themes for the core, SDK and some Silverlight Toolkit controls Read More......(read more) |
Silverlight Tip of the Day #10 – Converting Client IP to Geographical Location Posted: 03 May 2010 09:34 AM PDT In Tip of the Day #9 I showed you how you can obtain your clients IP addresses through either server side script or a simple web service call. In this tip I will show you how to take that IP address to determine the geographical location of the user that...( read more )...(read more) |
Windows Client Developer Roundup for 5/3/2010 Posted: 02 May 2010 09:38 PM PDT This is Windows Client Developer roundup #22. The Windows Client Developer Roundup aggregates information of interest to Windows Client Developers, including WPF , Surface, Windows 7, XNA, Windows Forms , Silverlight , Windows Phone and Visual Studio...( read more )...(read more) |
The fastest way to resize images from ASP.NET. And it’s (more) supported-ish. Posted: 03 May 2010 01:29 AM PDT I've shown before how to resize images using GDI , which is fairly common but is explicitly unsupported because we know of very real problems that this can cause. Still, many sites still use that method because those problems are fairly rare, and because most people assume it's the only way to get the job done. Plus, it works in medium trust. More recently, I've shown how you can use WPF APIs to do the same thing and get JPEG thumbnails , only 2.5 times faster than GDI (even now that GDI really ultimately uses WIC to read and write images). The boost in performance is great, but it comes at a cost, that you may or may not care about: it won't work in medium trust. It's also just as unsupported as the GDI option. What I want to show today is...(read more) |
Silverlight Cream for May 02, 2010 -- #854 Posted: 02 May 2010 09:58 PM PDT In this Issue: Michael Washington , Jason Young ( -2- , -3- ), Phil Middlemiss , Jeremy Likness , Victor Gaudioso , Kunal Chowdhury , Antoni Dol , and Jacek Ciereszko ( -2- ). Shoutout: Victor Gaudioso has aggregated All of My Silverlight Video Tutorials...( read more )...(read more) |
Windows Client Developer Roundup for 5/3/2010 Posted: 02 May 2010 09:38 PM PDT This is Windows Client Developer roundup #22. The Windows Client Developer Roundup aggregates information of interest to Windows Client Developers, including WPF , Surface, Windows 7, XNA, Windows Forms , Silverlight , Windows Phone and Visual Studio...( read more )...(read more) |
Xml Document Transforms (XDT) for any XML file in your project Posted: 02 May 2010 10:09 PM PDT There have been several requests floating around to be able to use XDTs (the technology behind Web.Debug.Config/Web.Release.Config) with other XML files within the project… To make that feasible I wrote a XmlDocumentTransform.targets file which can generically transform any XML file using the standard Web.Config Transformation syntax introduced with VS 2010… Learn more about XDT & Web.Config Transformation here… Now to get started first download XmlDocumentTransform.targets file from my Skydive… Follow the below simple steps to get transformation working for any well formed XML file in your project… Step 1: Save the downloaded XmlDocumentTransform.targets to %ProgramFiles%\MSBuild\Microsoft\VisualStudio\v10.0\Web\XmlDocumentTransform...(read more) |
Free WebCamps - North America, Asia and Europe - *Sign Up Now* Posted: 02 May 2010 02:31 PM PDT A few days ago on Twitter @ red7_liu tweeted: 微软的Web Camps大会要来中国了,大牛Scott Hanselman会来. This part "大牛" as I understand, effectively means "Big Cow." "Microsoft Web Camps Conference is coming to China, Big Cow Scott Hanselman will come." If that's not a good enough reason to go to Microsoft WebCamps , then what is? ;) This isn't a conference, it's a camp, like a classroom. Here's the schedule . Day 1: Learning: Web Platform from the ground up Day 2: Hack day, labs and building apps in teams First day we learn, second day we code. What are Web Camps? Web Camps are free, two-day events that allow attendees to learn and build on the Microsoft Web Platform. At camp, they will hear from Microsoft...(read more) |
You are subscribed to email updates from "microsoft" via ehsan in Google Reader To stop receiving these emails, you may unsubscribe now. | Email delivery powered by Google |
Google Inc., 20 West Kinzie, Chicago IL USA 60610 |
No comments:
Post a Comment