views:

21

answers:

1

I have a number of custom Item and Project Templates for Visual Studio 2010. I have build a VSIX Package that can be used to deploy these extensions to multiple developer's machines.

I am now creating a custom MSBuild Task that will be required for a new Item Template.

In my local project, I can get this to work by putting in a hard-coded path in the project file:

But this does not work when the VSIX package is deployed to the 'dev' Visual Studio instance. Visual Studio just reports that the CustomBuildTask.dll cannot be found.

Where does the VSIX deploy the DLL? Is there an MSBuild %(path) variable I can use to find the DLL on the other machines, or does each user have to manually copy the DLL and/or place a global ".tasks" file into their Visual Studio installation?

NOTE: There is no VSIX content type for MSBuild tasks the way there is for Item and Project Templates. I have tried "VS Package", "MEF Component" and "Custom Extension Type" - and none appear to work.

+1  A: 

I don't believe you can do this, since VSIX packages can't install files in arbitrary locations, and the msbuild task would need to go in an msbuild folder.

Daniel Plaisted
I found additional information. You are correct. VSIX just flat out doesn't support this, and documentation says to use a regular MSI install package instead.See: http://blogs.msdn.com/b/visualstudio/archive/2010/06/09/vsix-best-practices.aspxIn the "Installing via MSI" section, it says that MSBuild components "have to be in a specific, well-known location", which VSIX does not support.
Jeff B