Visual Studio 2017: .rptproj vs .sqlproj - c#

I have inherited a C# code base that started life in VS2013. We are now moving to VS2017 (from VS2015). The solution contains a number of .rptproj projects used to manage the database schemas. After installing MS Report Projects for VS I can now open the .rptproj projects in VS. However, if I create a new database project the file suffix is .sqlproj. As far as I can see these projects are the same, as they appear in the IDE at least, so I'm a little confused as to what the difference is? Is it purely a name change for some reason is is there more significance to this? I'm definitely missing something here.

.sqlproj files are for writing and deploying sql database objects (tables, views, stored procedures etc)
.rptproj files are for writing reporting services reports
They are different and both awesome :)

Related

Visual studio 2022 data source configuration wizard Error

Hello guys. I am getting an error like this when connecting to database in visual studio 2022.
Prior to this VS 2022 Note you see that VS 2022 has x64 processes. Even if it seems that it warns about Access Database, it is not only about Access Db.
Developers can prefer to use historical OLE Db Providers to connect to SQL Databases. Specially when they want / need to use DataSet / DataTable etc. components.
Almost all x86 Processes (means project references, specially old ones) should be compatible with this situation when these want to use in Project.
Please Check that your reference dlls are x64 or not.

Programmatically alter SSAS SSDT-BI (BIDS) project

I am writing a C# application that needs to alter a SSAS cube project. The alterations are mainly adding dimension members and measures, but could potentially go beyond that.
I can use Analysis Management Objects (AMO) to add new dimensions, measures etc. after the project has been deployed, but I am looking for a way to do this in a dwproj project on disc.
I could go through the project XML files and alter them directly, but this could be a likely source of errors, and it would be extremely sensitive to product updates from Microsoft.
Alternatively, I could deploy the project to an SSAS server temporarely, do the alteration via AMO, and then regenerate the project from the server. Is there a way to generate a dwproj from a SSAS server database programmatically? (Not via the SSDT-BI project template).
I would highly recommend you use AMO against the deployed database on the server then create the SSDT-BI project as needed. I don't know of a way to create the project files programmatically.
You could of course build a Visual Studio add-in to add dimensions and measures to the project inside Visual Studio like BIDS Helper does (example feature source code here) but that is overkill in my opinion and you will spend half of your time on Visual Studio add-in plumbing not your core business need.

Moving Visual Studio Installshield project from Windows XP to Windows 7

I have a Visual Studio project that compiles correctly on a Windows XP computer. I have copied the entire project to another PC running Windows 7 and it generates compilation errors.
The application uses .NET Framework 4.0 and Visual C++ redistributables, installed locally. It couldn't find these.
I realised that it was looking for the Microsoft.net in
c:\Program Files\Installshield\2012SpringLE\SetupPrerequisites
By right-clicking on the Microsoft .NET Framework 4.0 entry in the Redistributables (Installshield) window I was able to search for the merge module and corrected it to
c:\Program Files (x86)\Installshield\2012SpringLE\SetupPrerequisites
That overcame the .NET Framework 4.0 problem
However, I can't find the merge modules for the Visual C++ entry in the Redistributables (Installshield) window. Can anyone tell me where they are?
This is one of the big reasons that I suggest not only building on your machine. A proper CI build system should run on any number of build servers.
For merge modules you need to look at your merge module search path found in Tools | Options | Merge Modules Search those directories for your merge modules and copy them over to your new server.
For pretty much everything else you need to be aware of the Path Variables view (abstraction) what they are set to and how they are being used by various tables such as Binary, File, Icon and so on.
Personally I'm very meticulous when it comes to managing this and making sure everything is checked into source control properly. InstallShield will allow you to do very bad things in this area and not warn you what you are doing is problematic.

Working with multiple versions of Visual Studio

I'm trying to find a way of being able to use multiple versions of Visual Studio on the same set of projects. The majority of our team uses 2008, but I am trying out 2010. All projects are C#.
As I understand it Visual Studio 2010 insists on upgrading all projects, so it's not possible to leave all the solution/project files as 2008 versions. I really don't want to branch the entire source tree, so I'd like to find a way for multiple versions of the project files coexisting. Currently, I've duplicated all .sln and .csproj files so I have:
# 2008 versions
SolutionName.sln
ProjectA.csproj
ProjectB.csproj
# 2010 versions
SolutionName.vs2010.sln
ProjectA.vs2010.csproj
ProjectB.vs2010.csproj
The trouble is, despite the 2010 versioned files all having the same assembly names as their 2008 counterparts, Visual Studio (2010) believes the projects are all ProjectName.vs2010. Renaming the project in VS fails with a message saying a file of the same name already exists.
I don't think putting the 2010 version in a sub-folder would be a solution as it would screw up any relative paths in the files.
So:
Is there any way to convince VS that the project name should not be suffixed with .vs2010 (i.e. not the same name as the file)? Or
Am I approaching this the wrong way? Is there a better way of working with multiple versions of VS on the same projects?
UPDATE
My initial claim was wrong that Visual Studio was failing to find the project references because it was using the file name. The specific problem I was having was that in my build files the project references were of the form:
<ProjectReference Include="..\..\path\to\ProjectName.vs2010.csproj">
<Project>{48354450-2462-449D-8B32-EFECA39F6CD7}</Project>
<Name>ProjectName</Name>
</ProjectReference>
The project files that I copied apparently have a different ID (or whatever it is in the <Project> element. Simply removing the element from the build file has solved that particular issue:
<ProjectReference Include="..\..\path\to\ProjectName.vs2010.csproj">
<Name>ProjectName</Name>
</ProjectReference>
Having said that, the whole process of duplicating the project and solution files has actually been more effort than it's worth, so I'm not recommending this approach.
Do you often modify the projects?
You could simply work with your upgraded version of the csproj and sln files.
This way you would commit/check-in all changes to source code files except for the project files, which are not often modified anyway (except to add new files).
Then if you want to commit the changes in the project files, you'd work with an intermediate local VS2008 version of the file and line it up using your favorite diff/merge tools before eventually committing this VS2008 version. It would be some kind of local branch.
Unless you absolutely have to work with different versions of Visual Studio, those of the team still using 2008 could upgrade to Visual Studio 2010 Express. It's free for commercial use, and lacks only a few advanced features you might not need.
Have you tried opening the SolutionName.vs2010.sln in a simple text edior and changing the diplay name of the projects?
(form: Project("{$GUID}") = "$DISPLAYNAME", "PROJECTFILE", "{$OTHERGUID}"
Answering the second part of your question:
Why is it important to cover up that there are multiple versions of the project files? The reality is that there are two versions and you have to be careful to maintain both of them concerning the state of your project anyway (files are addded / renamed/ deleted; configuration options are changed).
Having two sets of projects and solution files will lead to differences between them which will break things.
Generally: Don't mix Visual Studio releases in the same project. Keeping the toolchain identical between developers will save you much trouble.
visual studio 2010 and 2008 project files (.csproj) are compatible side by side if you have both editors installed, meaning you can upgrade it, work on it in 2010, and have someone else work on it in 2008 without any issues. the only caveat is that you have to leave the target framework as .net 2.0 or 3.5 and that those who work in 2008 have to also have 2010 installed.
the only problem comes if they try to then open the project file in 2008 and they don't have 2010 installed (because I think 2010 adds some new build target that a standard 2008 won't know about). I didn't think this was a problem but I just ran into it this past week (on a web project), so it does exist in some form for some projects.
if you do go the rename route, the best way to go about that is to open the sln file in notepad, and rename the csproj references to the new names by hand (adding any new renamed folder paths), then renaming any folders outside visual studio, then renaming the file name in windows explorer, then rename the csproj in windows explorer, then open the solution in visual studio. your scm bindings may be hosed at that point though...

How does one convert a Visual Studio .NET 2008 solution to Visual Studio .NET 2005?

Assume that a solution only contains classes and that those classes are all written to .NET 2.0 specifications. If that solution were to be opened, converted and saved in Visual Studio 2008, would it be possible to reopen the solution later in Visual Studio 2005 with some minimal modifications to the .SLN file?
How would one go about doing that?
Is there a tool that will "down convert" .SLN files from 2008 to 2005 if all of the classes contained within the solution are already written to .NET 2.0 specifications?
Uusally, the only thing you need to do with .SLN files is to change the version number at the top of the file.
Your CS project files will also be almost OK, and if they're not, it's possible to tweak them so that they are OK with both 2005 and 2008.
We ran for a while with two solution files (05 and 08) sharing the same set of CS project files.
Be aware though, that you can't share VC project files between the two versions like this.
The 'tweak' for the project files is as follows:
CS Projects created on VS2008 will contain the line:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
VS2005 will choke on this, and you need to change it to the following:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
The latter will work with both 2005 and 2008.
If you're not using any "fancy" features in 2008, in my experience the only thing which changes is the version number in a couple of places. That can be manually edited (it's at the top of the file IIRC). It's at least worth a try. If you're used VS2008-specific features (designers etc) it may well not work but for simple class libraries I've had success doing this.
You may be interested in a blog post about VS2005 and VS2008 co-existing that I wrote a while ago.
Here there is a converter http://www.emmet-gray.com/Articles/ProjectConverter.htm (works with VS 2010 also).
There is also http://www.dsmyth.net/wiki/Downloads_VS2008ToVS2005Patcher.ashx
(link currently broken?).
I also found this http://www.codeplex.com/Vs2008BackMigration but I didn't test it.
Yes, it is possible, if you "downgrade" the solution files.
No, there is no such tool that I know of, and I've looked.
You have three options:
Not open the solution file in 2008, and thus never upgrade it
Not mix client versions against the same files (ie. stick to 2005, or everyone upgrade)
Keep separate solution files for 2005 and 2008, make sure all the same projects are present in both
Thanks to #Will Dean for reminding me that project files can indeed be shared. Note that they are touched by the 2008 editor, but they can be opened in 2005 afterwards.
You could try this. YMMV
http://www.emmet-gray.com/Articles/ProjectConverter.htm
I remember it was posted on Jon Skeets blog a few months back and seemed to get a thumbs up from people
There's no direct way, and it's a tall order if you try. The simplest way would be to create a new 2005 project and add your classes.
For starters: these are the differences that you'd see:
.csproj files: (these are based on MSBuild schema)
(edit)
ToolsVersion
ProductVersion
ProjectVersion
(remove)
OldToolsVersion
TargetFramework
.sln files: (no schema)
Format Version 10.0
etc.

Categories