<coming soon>
coapp / coapp.powershell Goto Github PK
View Code? Open in Web Editor NEWThis project forked from wwahammy/signing
ClrPlus Signing
This project forked from wwahammy/signing
ClrPlus Signing
Repro:
configurations
{
TEST
{
choices: {TESTNo, TESTYes};
};
}
files {
[TESTYes] {
bin: {file1.dll};
}
[TESTNo] {
bin: {file2.dll};
}
}
In this case file2.dll is always copied to the output folder.
As far as I undertand the generated msbuild code, the value of the property is not propagated to the "redist" package and always has a default value (the first one, I guess).
I'm not sure whether this is a NuGet or a CoApp issue, but here goes anyway.
When consuming a native package, two "Import" elements are added to the vcxproj file: one in the top of the file (of a .props file) and one in the bottom of the file (of a .targets file). The imports in each group are sorted by package installation order. This has the effect of creating unnecessary file modifications (a pain with source control) when a given version of a package is reinstalled, because its imports will move from wherever they are to the end/beginning of each list.
My suggestion: alphabetize the imports instead.
I would like to be able to add an external .targets or .props file to my package and have it imported into consuming projects. It may or may not already be possible, but if it is I couldn't figure out how.
v 1.23.196
The following code snippet will throw an exception (assuming the required nuspec
section is provided):
nuget {
files {
("Win32,x64", "v100,v110") => {
};
};
};
The exception and stacktrace are included below. The line and character number below reflect the code snippet above.
(3,8):Error TokenNotExpected:Invalid token in selector declaration--found ', '
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseSelector(IEnumerable`1 terminators, SourceLocation sourceLocation, String selectorName, String parameter)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseSelector(IEnumerable`1 terminators, SourceLocation sourceLocation, String selectorName, String parameter)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.ParseItemsInDictionary(ObjectNode context, Continuation onComplete, Boolean justOneItem, String prefix)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.Global(Continuation onComplete)
at ClrPlus.Scripting.Languages.PropertySheetV3.PropertySheetParser.Global(Continuation onComplete)
at ClrPlus.Scripting.Languages.PropertySheetV3.RootPropertySheet.ParseText(String propertySheetText, String originalFilename)
at ClrPlus.Scripting.MsBuild.Packaging.PackageScript..ctor(String filename)
at CoApp.Powershell.Commands.WriteNuGetPackage.ProcessRecord()
at System.Management.Automation.CommandProcessor.ProcessRecord()
Write-NuGetPackage generates an MSBuild "Copy" task in the targets file for each DLL specified with "bin:" in the autopkg file.
I would like to be able to pass "UseHardlinksIfPossible=true" to the Copy command, thereby creating hard links to the DLLs instead of copying them. In many native libraries this makes a huge difference - I have seen libraries with hundreds of megabytes worth of DLLs, and it takes time to copy them around.
The following autopackage script fails if each of the "big-64" and "big-32" folders contains 5 DLLs, each of which is about 2MB in size. It doesn't fail if the DLLs are small (a few KB each).
files {
[x64] {
bin: big-64\*.dll;
}
[x86] {
bin: big-32\*.dll;
}
};
The error message is:
Write-NuGetPackage : The given key was not present in the dictionary.
I created a minimal script (with fake "DLLs") to reproduce this issue, I'll try to upload it.
When generating a native NuGet package with Write-NuGetPackage, and when specifying my library's LIB files with "lib:" in the autopkg file, any project that consumes the package will automatically try to link with that lib file (because it is added under "AdditionalDependencies").
This behavior is commonly undesirable - many libraries (e.g. Boost, CGAL) have their own smart auto-linking mechanism built it to their headers, by the means of "#pragma comment" for example. When this is the case, adding the library files to AdditionalDependencies may actually cause linkage errors.
I could not find any way to disable this behavior (while still packaging and distributing the LIB files), and I think there should be.
Currently we use the CoApp cmdlet to generate the nuget spec files, which we later feed Teamcity's NuGet Pack task. As such, every time we want to create/change an autopkg script we need to run Write-Nuget -NoClean package.autopkg
, wait for the nupkg to be created and then delete it before committing the changes.
It would be helpful if there would be an option to just create the nuspec files without building the package itself.
Many C++ libraries have separate project configurations for ANSI/Unicode/Multibyte character sets. I think it would be useful to be able to create conditions based on the project character set out-of-the-box.
If I understand correctly, the _UNICODE and _MBCS defines are to be used to detect the character set.
As of the current development version (2.4.199.0), every time I reinstall a package (from the Package Manager Console, using update-package somepackage -reinstall
) - which I do a lot - I am asked to restart Visual Studio to finish the reinstallation. This was not the case in the previous version I used (which was the beta/stable one).
To reproduce this, build a project that consumes the package before trying to reinstall it.
There are at least two use cases for this:
Creating a NuGet package during normal build with MSBuild/Visual Studio
When I build from Visual Studio, I am only building a single pivot configuration. To be able to reuse a single .autopkg file for everything, I will need to specify (with Visual Studio variables) which pivot configuration I have built, and will be creating a NuGet package for.
Example: Write-NuGetPackage projectA.autopkg -SelectPivot $(DefaultPlatformToolset) $(Platform) $(Configuration) $(ConfigurationType)
Evaluates to e.g. : Write-NuGetPackage projectA.autopkg -SelectPivot v120 Win32 Debug DynamicLibrary
(I realise that DynamicLibrary isn't currently an alias of dynamic Linkage pivot)
Flexibility during CI / nightly build
When I build all projects using a build server, I sometimes want to exclude a pivot configuration temporarily, while still using a single .autopkg file for everything.
Example. : Write-NuGetPackage projectA.autopkg -SelectPivot v120 Win32 Debug DynamicLibrary -SelectPivot v120 Win32 Release DynamicLibrary
With a lot of pivots, it would be convenient to be able to exclude pivot configurations as well.
Files included in the autopackage script with "bin:" are automatically copied to the output folder of the project consuming the package. I suppose this is triggered by this line in PackageScriptTemplate.autopkg:
#add-each-file : ::nuget.[redist]targets.[${condition}].CopyToOutput;
It seems that this CopyToOutput command is defined in C# code and not in an autopackage script, so it cannot be easily overridden in my scripts. What I would like is a command very like CopyToOutput (which still uses the MSBuild Copy task to copy when building, and still uses hard links as I requested in a previous issue), except it will copy the files to an arbitrarily supplied folder instead of the project target folder. This folder may vary by pivots (win32, x64, debug, release...).
What I need to achieve by this: instead of copying 3rd party DLLs to the output folder when building, I have to collect all 3rd party DLLs in one central folder, separated by platform.
I have a C++ library that requires a specific directory structure for data files. The root of these files should be the same location as the executable. Current the tool seems to only allow top level files, though it will maintain a deep directory structure in the nuget package itself.
Below is a autopkg file, which specifies files in the "etc" directory. I would like them, after build, to appear in an etc folder that sits next to the .exe (or whatever) is built. Currently all files, no matter how deep inside the etc directory, appear at the top level, right next to the build project executable.
Somehow I need an argument to CopyToOutput that will keep the folder structure...
nuget {
nuspec {
id = ROOT;
version = 5.34.09.0018;
title = ROOT;
authors = {CERN};
owners = {G. Watts};
licenseUrl: "http://root.cern.ch/drupal/content/license";
projectUrl: "http://root.cern.ch";
iconUrl: "http://root.cern.ch/drupal/sites/default/files/rootdrawing-logo.png";
requireLicenseAcceptance: false;
summary: The complete ROOT data analysis toolkit for C++;
description: Contains all libraries needed for the full set of ROOT utilities;
releaseNotes: "Release v5.34.09 of ROOT";
tags: data;
};
files {
etc += {
#output {
package = redist;
};
#add-each-file : ::nuget.[redist]targets.[${condition}].CopyToOutput;
#destination : ${d_bin}\etc;
};
include: { "root\include\*"};
[x86,dynamic] {
lib: { "root\lib\*.lib" };
bin: { "root\bin\*.dll" };
etc: { "root\etc\**\*" };
};
}
props {
//@alias ForcedIncludeFiles = ItemDefinitionGroup.ClCompile.ForcedIncludeFiles;
ItemDefinitionGroup.ClCompile.ForcedIncludeFiles += "w32pragma.h";
//ForcedIncludeFiles += "w32pragma.h";
}
targets {
Defines += "_LATER";
}
}
When adding an import directive to an autopkg file, e.g. @import "inc.autopkg";
where does it look for inc.autopkg?
I could not find any documentation regarding this. Moreover, when my script which resided in /foo/bar/main.autopkg imported "inc.autopkg" it was able to load /foo/inc.autopkg, i.e. from the parent folder.
I'm attempting to add multiple native NuGet packages into one projects and something seems to not be working right. I've added cpprestsdk, cpprestsdk.redist first and everything is fine. I can #include <http_client.h> and compile. Then I added bzip2 and bzip2.redist but when I attempt to #include <bzlib.h> Visual Studio tells me that it cannot find the file. I also get a LNK2019 error: unresolved external symbol __imp___CrtDbgReportW references in public: static void __cdecl pplx::details::_Task_impl_base::_AsyncInit<...>. If I remove the #include for bzlib.h this goes away and the project compiles again without issue.
I'm using Windows 7 SP1 x64 with Visual Studio 2012 Update 2 and NuGet 2.5.40416.9020.
v 1.23.255
Example, same error from a common .vcxproj file:
(Invoke-Build)
(82,0):Error ERROR:'apr_os_level' : undeclared identifier [C:\coapp-packages\apr\copkg\libapr-1.vcxproj]
(msbuild)
c:\coapp-packages\apr\user\win32\userinfo.c(82): error C2065: 'apr_os_level' : undeclared identifier [C:\coapp-packages\apr\COPKG\libapr-1.vcxproj]
Attempting to assign myself here, sorry.
Hi,
I am not sure if this is desired behavior but I think that the PDB file of a DLL should also be copied to the output folder of a consuming project so that the DLL can be debugged.
I suppose you'd need to cooperate with the NuGet fellows for this one, but it would be really nice if the overlay packages you're never supposed to install anyway did not appear in the list of available packages in Visual Studio.
When including a file in the package (by name and not by wildcards), please let me specify a different target name for the file (the name by which it goes into the package and is distributed to package consumers). This is in the spirit of similar functionality provided by various installer makers.
Specifically, I need this for a .txt file I have to add to the package with "redist: ". I cannot rename the original file, and I need the file to be distributed to package consumers with a different name.
I have a native NuGet package with some DLLs defined with "bin:" in the autopkg file. When any native project which consumes the generated package is built, these DLLs are copied to the output folder of the project.
This may be desired if the consuming project is an application or a DLL by itself, but is probably undesirable if the consuming project is a static library (in our case, static libraries are built to a separate "lib" output folder).
I think this behavior should either be possible to toggle on/off, or turned off altogether for consuming projects which are static libraries.
re: cpprestsdk
the implicit rules in the template have [static] in them which are implicitly creating a static option in Linkage (so that consumers think they can use that)
This shouldn't happen- and we should be able to clean that up when we move to satellite packages in July.
When specifying files to include in a package, the simple wildcard (*) support may not be enough. It is very common for libraries (e.g. Qt) to have a different filename, and not a different folder, for debug libraries or DLLs (usually "d" is appended somewhere in the filename, either before or after the version number). This makes it very hard, or rather impossible, to create a pattern which will include the release binaries (which do not have a particular suffix).
One possible solution - an option to add an exclusion pattern, i.e. something like "add .dll except d.dll". Another possible solution - make the pattern (optionally) a regular expression.
Include directories are not automatically included in the consuming project with coapp powershell v2.4.4.425 as it was in the release version.
[Edit]
I found that this bug happens only when we use the nested include feature. If I create a package with
nestedInclude: {
#destination = ${d_include}\mylib;
"root\mylib\*"
};
then no AdditionalIncludeDirectories
is added to the targets file.
nestedInclude: {
#destination = ${d_include}\mylib;
"root\mylib\*"
};
include: { "root\*" };
and there is at least one file in root the AdditionalIncludeDirectories
is properly added to the targets file.
This is all just a spare-time idea, but I thought I'd share it.
I have this idea of patching MsBuild to accept an alternate syntax, mainly because I believe that the power and flexibility in MsBuild is hidden underneath a painful, irritating XML syntax,
I think I can make a transparent patch so that instead of writing scripts like this:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C417049A-3DA0-4F3B-A561-FEAF4BE53BD3}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CoApp.Powershell</RootNamespace>
<AssemblyName>CoApp.Powershell</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir>
<SolutionPath Condition="$(SolutionPath) == '' Or $(SolutionPath) == '*Undefined*'">$(SolutionDir)\CoApp.Powershell.sln</SolutionPath>
<RestorePackages>true</RestorePackages>
</PropertyGroup>
<Import Project="$(SolutionPath).props" Condition="Exists('$(SolutionPath).props')" />
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineConstants>$(DefineConstants);DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="CSharpTest.Net.RpcLibrary, Version=2.12.810.409, Culture=neutral, PublicKeyToken=06aee00cce822474, processorArchitecture=MSIL">
<HintPath>$(SolutionDir)\packages\CSharpTest.Net.RpcLibrary.2.12.810.409\lib\net40\CSharpTest.Net.RpcLibrary.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\ngit2.2.1.0.20130924\lib\net40\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="Ionic.Zip">
<HintPath>..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\Ionic.Zip.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Build" />
<Reference Include="Microsoft.Build.Framework" />
<Reference Include="Microsoft.Build.Tasks.v4.0" />
<Reference Include="Microsoft.Build.Utilities.v4.0" />
<Reference Include="Microsoft.Deployment.WindowsInstaller, Version=3.0.0.0, Culture=neutral, PublicKeyToken=ce35f76fcda82bad, processorArchitecture=MSIL">
<HintPath>..\packages\DTF-Unofficial.3.6.2928\lib\Microsoft.Deployment.WindowsInstaller.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.165\lib\net40\Microsoft.Threading.Tasks.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.165\lib\net40\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.165.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.Bcl.Async.1.0.165\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.WindowsAzure.Storage, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\WindowsAzure.Storage.3.0.1.0\lib\net40\Microsoft.WindowsAzure.Storage.dll</HintPath>
</Reference>
<Reference Include="Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\ngit2.2.1.0.20130924\lib\net40\Mono.Posix.dll</HintPath>
</Reference>
<Reference Include="Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\ngit2.2.1.0.20130924\lib\net40\Mono.Security.dll</HintPath>
</Reference>
<Reference Include="Mono.Security.Win32, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\ngit2.2.1.0.20130924\lib\net40\Mono.Security.Win32.dll</HintPath>
</Reference>
<Reference Include="MSBuild.ExtensionPack">
<HintPath>..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.dll</HintPath>
</Reference>
<Reference Include="MSBuild.ExtensionPack.Git">
<HintPath>..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.Git.dll</HintPath>
</Reference>
<Reference Include="MSBuild.ExtensionPack.Loggers">
<HintPath>..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.Loggers.dll</HintPath>
</Reference>
<Reference Include="MSBuild.ExtensionPack.TaskFactory.PowerShell">
<HintPath>..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.TaskFactory.PowerShell.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.5.0.8\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NGit, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\ngit2.2.1.0.20130924\lib\net40\NGit.dll</HintPath>
</Reference>
<Reference Include="NSch, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\ngit2.2.1.0.20130924\lib\net40\NSch.dll</HintPath>
</Reference>
<Reference Include="Sharpen, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\ngit2.2.1.0.20130924\lib\net40\Sharpen.dll</HintPath>
</Reference>
<Reference Include="Sharpen.Unix, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\ngit2.2.1.0.20130924\lib\net40\Sharpen.Unix.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data.Services.Client" />
<Reference Include="System.IO">
<HintPath>..\packages\Microsoft.Bcl.1.1.6\lib\net40\System.IO.dll</HintPath>
</Reference>
<Reference Include="System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0\System.Management.Automation.dll</HintPath>
</Reference>
<Reference Include="System.Net" />
<Reference Include="System.Runtime">
<HintPath>..\packages\Microsoft.Bcl.1.1.6\lib\net40\System.Runtime.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Threading.Tasks">
<HintPath>..\packages\Microsoft.Bcl.1.1.6\lib\net40\System.Threading.Tasks.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="$(SolutionDir)\common\AssemblyStrongName.cs" />
<Compile Include="Commands\ConvertFrom-VcxProject.cs" />
<Compile Include="Commands\GetPublicCertificate.cs" />
<Compile Include="Commands\InvokeBuildCmdlet.cs" />
<Compile Include="Commands\NewBuildinfoCmdlet.cs" />
<Compile Include="Commands\NewSolution.cs" />
<Compile Include="Commands\NewVcxProject.cs" />
<Compile Include="Commands\PublishNuGetPackage.cs" />
<Compile Include="Commands\SetCodeSignature.cs" />
<Compile Include="Commands\ShowCoAppToolsVersion.cs" />
<Compile Include="Commands\UpdateCoAppTools.cs" />
<Compile Include="Commands\WriteNugetPackage.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Signers\AuthenticodeSigner.cs" />
<Compile Include="Signers\OPCSigner.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="etc\common-footer.vcxproj">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<SubType>Designer</SubType>
</None>
<None Include="etc\common-header.vcxproj">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<SubType>Designer</SubType>
</None>
<None Include="etc\common-overrides.vcxproj">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="etc\common-variables.vcxproj">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<SubType>Designer</SubType>
</None>
<None Include="etc\MSBuild.ExtensionPack.tasks">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<SubType>Designer</SubType>
</None>
<None Include="etc\nuget-overlay.cmd">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="etc\PackageScriptTemplate.autopkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="etc\PackageScriptTemplate_ltcg.autopkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="etc\PackageScriptTemplate_static.autopkg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="etc\Pivots.properties">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="etc\template-project.vcxproj">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<SubType>Designer</SubType>
</None>
<None Include="etc\vc10.toolinfo">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="etc\vc11.toolinfo">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="etc\vc12.toolinfo">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="SigningService.psm1">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="CoApp.psd1">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<None Include="etc\vcxproj.inc">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<SubType>Designer</SubType>
</None>
<None Include="etc\autopackage.targets" />
<None Include="CoApp.Powershell.Tools.dll-help.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<SubType>Designer</SubType>
</None>
<None Include="etc\default_tools">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="etc\buildinfo-template">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<Content Include="etc\NuGet.exe">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\clrplus\Core\Core.csproj">
<Project>{C8506264-EE4F-442C-B2C3-4C0BD4975A2A}</Project>
<Name>Core</Name>
</ProjectReference>
<ProjectReference Include="..\clrplus\Platform\Platform.csproj">
<Project>{bd607d7f-ad3f-4819-b1e5-f6a01d3cde1c}</Project>
<Name>Platform</Name>
</ProjectReference>
<ProjectReference Include="..\clrplus\Powershell.Azure\Powershell.Azure.csproj">
<Project>{b172ee7f-7e84-4111-992c-e3a125e194f6}</Project>
<Name>Powershell.Azure</Name>
</ProjectReference>
<ProjectReference Include="..\clrplus\Powershell.Core\Powershell.Core.csproj">
<Project>{DF38AA27-E211-4A3C-A3AB-ADD32347A25A}</Project>
<Name>Powershell.Core</Name>
</ProjectReference>
<ProjectReference Include="..\clrplus\Powershell.Provider\Powershell.Provider.csproj">
<Project>{b444dab8-9a7e-4b87-be31-b1a565964786}</Project>
<Name>Powershell.Provider</Name>
</ProjectReference>
<ProjectReference Include="..\clrplus\Scripting.MsBuild\Scripting.MsBuild.csproj">
<Project>{123467A0-2FCE-43F8-9814-0EB1F6C91234}</Project>
<Name>Scripting.MsBuild</Name>
</ProjectReference>
<ProjectReference Include="..\clrplus\Scripting\Scripting.csproj">
<Project>{1F5667A0-2FCE-43F8-9814-0EB1F6C9D8DC}</Project>
<Name>Scripting</Name>
</ProjectReference>
<ProjectReference Include="..\clrplus\Windows.PeBinary\Windows.PeBinary.csproj">
<Project>{B1BD48CC-CAAE-4D32-A011-C77BB23DF156}</Project>
<Name>Windows.PeBinary</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
<PropertyGroup>
<AssemblySearchPaths>$(AssemblySearchPaths)</AssemblySearchPaths>
</PropertyGroup>
<PropertyGroup>
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>
set TOOLSDIR=$(SolutionDir)\tools
set NODE_PATH=%25TOOLSDIR%25\node
path = %25TOOLSDIR%25;%25NODE_PATH%25\node_modules\.bin;%25PATH%25
cd $(TargetDir)
if '$(ConfigurationName)' == 'Release' goto RELEASE
:DEBUG
powershell Set-content coapp.psd1 ((Get-Content coapp.psd1).Replace('CoApp.Powershell.Tools.dll','coapp.powershell.dll') )
goto common
:RELEASE
$(SolutionDir)\tools\il-repack.exe /targetplatform:v4 /lib:. /lib:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" /lib:"C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0" /parallel /union /out:CoApp.Powershell.Tools.dll CoApp.Powershell.dll ClrPlus.Core.dll ClrPlus.Platform.dll ClrPlus.Powershell.Azure.dll ClrPlus.Powershell.Core.dll ClrPlus.Powershell.Provider.dll ClrPlus.Scripting.dll ClrPlus.Scripting.MsBuild.dll ClrPlus.Windows.Api.dll ClrPlus.Windows.PeBinary.dll Microsoft.Cci.Analysis.ControlAndDataFlowGraph.dll Microsoft.Cci.AstsProjectedAsCodeModel.dll Microsoft.Cci.CodeModel.dll Microsoft.Cci.CodeModelToIL.dll Microsoft.Cci.ContractExtractor.dll Microsoft.Cci.CSharpSourceEmitter.dll Microsoft.Cci.ILGenerator.dll Microsoft.Cci.MetadataHelper.dll Microsoft.Cci.MetadataModel.dll Microsoft.Cci.MutableCodeModel.dll Microsoft.Cci.MutableMetadataModel.dll Microsoft.Cci.NewILToCodeModel.dll Microsoft.Cci.PdbReader.dll Microsoft.Cci.PdbWriter.dll Microsoft.Cci.PeReader.dll Microsoft.Cci.PeWriter.dll Microsoft.Cci.ReflectionEmitter.dll Microsoft.Cci.SourceEmitter.dll Microsoft.Cci.SourceModel.dll Microsoft.Threading.Tasks.dll Microsoft.Threading.Tasks.Extensions.dll Microsoft.Threading.Tasks.Extensions.Desktop.dll System.Runtime.dll System.Threading.Tasks.dll Microsoft.WindowsAzure.Configuration.dll Microsoft.WindowsAzure.Storage.dll Microsoft.Deployment.WindowsInstaller.dll CSScriptLibrary.dll Mono.CSharp.dll Ionic.Zip.dll MSBuild.ExtensionPack.dll MSBuild.ExtensionPack.Git.dll MSBuild.ExtensionPack.Loggers.dll MSBuild.ExtensionPack.TaskFactory.PowerShell.dll Sharpen.dll ICSharpCode.SharpZipLib.dll NGit.dll NSch.dll CSharpTest.Net.RpcLibrary.dll Mono.Security.dll Microsoft.Data.Edm.dll Microsoft.Data.OData.dll Microsoft.Data.Services.Client.dll Newtonsoft.Json.dll Interop.COMAdmin.dll Interop.IWshRuntimeLibrary.dll
REM EmbedAssemblyAsResource CoApp.Powershell.Tools.dll ClrPlus.Core.dll ClrPlus.Platform.dll ClrPlus.Powershell.Azure.dll ClrPlus.Powershell.Core.dll ClrPlus.Powershell.Provider.dll ClrPlus.Scripting.dll ClrPlus.Scripting.MsBuild.dll ClrPlus.Windows.Api.dll ClrPlus.Windows.PeBinary.dll Microsoft.Cci.Analysis.ControlAndDataFlowGraph.dll Microsoft.Cci.AstsProjectedAsCodeModel.dll Microsoft.Cci.CodeModel.dll Microsoft.Cci.CodeModelToIL.dll Microsoft.Cci.ContractExtractor.dll Microsoft.Cci.CSharpSourceEmitter.dll Microsoft.Cci.ILGenerator.dll Microsoft.Cci.MetadataHelper.dll Microsoft.Cci.MetadataModel.dll Microsoft.Cci.MutableCodeModel.dll Microsoft.Cci.MutableMetadataModel.dll Microsoft.Cci.NewILToCodeModel.dll Microsoft.Cci.PdbReader.dll Microsoft.Cci.PdbWriter.dll Microsoft.Cci.PeReader.dll Microsoft.Cci.PeWriter.dll Microsoft.Cci.ReflectionEmitter.dll Microsoft.Cci.SourceEmitter.dll Microsoft.Cci.SourceModel.dll Microsoft.Threading.Tasks.dll Microsoft.Threading.Tasks.Extensions.dll Microsoft.Threading.Tasks.Extensions.Desktop.dll System.Runtime.dll System.Threading.Tasks.dll Microsoft.WindowsAzure.Configuration.dll Microsoft.WindowsAzure.Storage.dll Microsoft.Deployment.WindowsInstaller.dll CSScriptLibrary.dll Mono.CSharp.dll Ionic.Zip.dll MSBuild.ExtensionPack.dll MSBuild.ExtensionPack.Git.dll MSBuild.ExtensionPack.Loggers.dll MSBuild.ExtensionPack.TaskFactory.PowerShell.dll Sharpen.dll ICSharpCode.SharpZipLib.dll NGit.dll NSch.dll CSharpTest.Net.RpcLibrary.dll Mono.Security.dll Microsoft.Data.Edm.dll Microsoft.Data.OData.dll Microsoft.Data.Services.Client.dll Newtonsoft.Json.dll
"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\CoApp.Powershell.Tools.dll
"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\CoApp.psd1
"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\SigningService.psm1
"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\CoApp.NuGetNativeExtensions.dll
"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\CoApp.NuGetNativeMSBuildTasks.dll
:common
copy /y $(TargetDir)\CoApp.NuGetNativeExtensions.* $(TargetDir)\etc
copy /y $(TargetDir)\CoApp.NuGetNativeMSBuildTasks.* $(TargetDir)\etc
copy /y "$(TargetDir)\etc\CoApp.NuGetNativeMSBuildTasks.dll" "$(TargetDir)\etc\CoApp.NuGetNativeMSBuildTasks.dll.orig"</PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets')" />
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
<Error Condition="!Exists('..\packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets')" Text="This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567." HelpKeyword="BCLBUILD2001" />
<Error Condition="Exists('..\packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
You can write them in a C-like structure like this:
(ToolsVersion:4.0, DefaultTargets:Build);
#TryImport $(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props;
Configuration?=Debug;
Platform?=AnyCPU;
ProjectGuid="{C417049A-3DA0-4F3B-A561-FEAF4BE53BD3}";
OutputType=Library;
AppDesignerFolder=Properties;
RootNamespace=CoApp.Powershell;
AssemblyName=CoApp.Powershell;
TargetFrameworkVersion=v4.0;
FileAlignment=512;
SolutionDir?=..\;
SolutionPath?=$(SolutionDir)\CoApp.Powershell.sln;
RestorePackages?=true;
#TryImport $(SolutionPath).props;
if( '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ) {
DebugSymbols=true;
DebugType=full;
Optimize=false;
DefineConstants=+ {
DEBUG,
TRACE
};
ErrorReport=prompt;
WarningLevel=4;
}
if( '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ) {
DebugType=pdbonly;
Optimize=true;
DefineConstants=TRACE;
ErrorReport=prompt;
WarningLevel=4;
}
Reference {
"CSharpTest.Net.RpcLibrary, Version=2.12.810.409, Culture=neutral, PublicKeyToken=06aee00cce822474, processorArchitecture=MSIL"
{ HintPath=$(SolutionDir)\packages\CSharpTest.Net.RpcLibrary.2.12.810.409\lib\net40\CSharpTest.Net.RpcLibrary.dll },
"CSharpTest.Net.RpcLibrary, Version=2.12.810.409, Culture=neutral, PublicKeyToken=06aee00cce822474, processorArchitecture=MSIL"
{ SpecificVersion=False, HintPath=..\packages\ngit2.2.1.0.20130924\lib\net40\ICSharpCode.SharpZipLib.dll },
Ionic.Zip
{ HintPath=..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\Ionic.Zip.dll }
Microsoft.Build,
Microsoft.Build.Framework,
Microsoft.Build.Tasks.v4.0,
Microsoft.Build.Utilities.v4.0,
"Microsoft.Deployment.WindowsInstaller, Version=3.0.0.0, Culture=neutral, PublicKeyToken=ce35f76fcda82bad, processorArchitecture=MSIL"
{ HintPath=..\packages\DTF-Unofficial.3.6.2928\lib\Microsoft.Deployment.WindowsInstaller.dll },
"Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\Microsoft.Bcl.Async.1.0.165\lib\net40\Microsoft.Threading.Tasks.dll },
"Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\Microsoft.Bcl.Async.1.0.165\lib\net40\Microsoft.Threading.Tasks.Extensions.dll },
"Microsoft.Threading.Tasks.Extensions.Desktop, Version=1.0.165.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\Microsoft.Bcl.Async.1.0.165\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll },
"Microsoft.WindowsAzure.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\Microsoft.WindowsAzure.ConfigurationManager.2.0.3\lib\net40\Microsoft.WindowsAzure.Configuration.dll },
"Microsoft.WindowsAzure.Storage, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\WindowsAzure.Storage.3.0.1.0\lib\net40\Microsoft.WindowsAzure.Storage.dll },
"Mono.Posix, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\ngit2.2.1.0.20130924\lib\net40\Mono.Posix.dll },
"Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\ngit2.2.1.0.20130924\lib\net40\Mono.Security.dll },
"Mono.Security.Win32, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
{ SpecificVersion False, HintPath=..\packages\ngit2.2.1.0.20130924\lib\net40\Mono.Security.Win32.dll },
"MSBuild.ExtensionPack"
{ HintPath=..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.dll },
"MSBuild.ExtensionPack.Git"
{ HintPath=..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.Git.dll },
"MSBuild.ExtensionPack.Loggers"
{ HintPath=..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.Loggers.dll },
"MSBuild.ExtensionPack.TaskFactory.PowerShell"
{ HintPath=..\packages\MSBuild.Extension.Pack.1.3.0\tools\net40\MSBuild.ExtensionPack.TaskFactory.PowerShell.dll },
"Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"
{ HintPath=..\packages\Newtonsoft.Json.5.0.8\lib\net40\Newtonsoft.Json.dll },
"NGit, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\ngit2.2.1.0.20130924\lib\net40\NGit.dll },
"NSch, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\ngit2.2.1.0.20130924\lib\net40\NSch.dll },
"Sharpen, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\ngit2.2.1.0.20130924\lib\net40\Sharpen.dll },
"Sharpen.Unix, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\packages\ngit2.2.1.0.20130924\lib\net40\Sharpen.Unix.dll },
System ,
System.Core ,
System.Data.Services.Client ,
System.IO,
{ SpecificVersion False, HintPath=..\packages\Microsoft.Bcl.1.1.6\lib\net40\System.IO.dll },
"System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
{ SpecificVersion False, HintPath=..\..\..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0\System.Management.Automation.dll },
System.Net ,
System.Runtime
{ SpecificVersion False, HintPath=..\packages\Microsoft.Bcl.1.1.6\lib\net40\System.Runtime.dll },
System.Runtime.Serialization,
System.Threading.Tasks
{ SpecificVersion False, HintPath=..\packages\Microsoft.Bcl.1.1.6\lib\net40\System.Threading.Tasks.dll },
System.Xml.Linq ,
System.Data.DataSetExtensions ,
Microsoft.CSharp ,
System.Data ,
System.Xml ,
System ,
System.Core ,
WindowsBase
}
Compile {
$(SolutionDir)\common\AssemblyStrongName.cs,
Commands\ConvertFrom-VcxProject.cs,
Commands\GetPublicCertificate.cs,
Commands\InvokeBuildCmdlet.cs,
Commands\NewBuildinfoCmdlet.cs,
Commands\NewSolution.cs,
Commands\NewVcxProject.cs,
Commands\PublishNuGetPackage.cs,
Commands\SetCodeSignature.cs,
Commands\ShowCoAppToolsVersion.cs,
Commands\UpdateCoAppTools.cs,
Commands\WriteNugetPackage.cs,
Properties\AssemblyInfo.cs,
Signers\AuthenticodeSigner.cs,
Signers\OPCSigner.cs
}
None {
app.config,
etc\common-footer.vcxproj
{ CopyToOutputDirectory=PreserveNewest; SubType=Designer },
etc\common-header.vcxproj
{ CopyToOutputDirectory=PreserveNewest; SubType=Designer },
etc\common-overrides.vcxproj
{ CopyToOutputDirectory=PreserveNewest; SubType=Designer },
etc\common-variables.vcxproj
{ CopyToOutputDirectory=PreserveNewest; SubType=Designer },
etc\MSBuild.ExtensionPack.tasks
{ CopyToOutputDirectory=PreserveNewest; SubType=Designer },
etc\nuget-overlay.cmd
{ CopyToOutputDirectory=PreserveNewest },
etc\PackageScriptTemplate.autopkg
{ CopyToOutputDirectory=PreserveNewest },
etc\PackageScriptTemplate_ltcg.autopkg
{ CopyToOutputDirectory=PreserveNewest },
etc\PackageScriptTemplate_static.autopkg
{ CopyToOutputDirectory=PreserveNewest },
etc\Pivots.properties
{ CopyToOutputDirectory=PreserveNewest },
etc\template-project.vcxproj
{ CopyToOutputDirectory=PreserveNewest; SubType=Designer },
etc\vc10.toolinfo
{ CopyToOutputDirectory=PreserveNewest },
etc\vc11.toolinfo
{ CopyToOutputDirectory=PreserveNewest },
etc\vc12.toolinfo
{ CopyToOutputDirectory=PreserveNewest },
SigningService.psm1
{ CopyToOutputDirectory=PreserveNewest },
CoApp.psd1
{ CopyToOutputDirectory=PreserveNewest },
packages.config,
etc\vcxproj.inc
{ CopyToOutputDirectory=PreserveNewest; SubType=Designer },
etc\autopackage.targets,
CoApp.Powershell.Tools.dll-help.xml,
{ CopyToOutputDirectory=PreserveNewest; SubType=Designer },
etc\default_tools
{ CopyToOutputDirectory=PreserveNewest },
etc\buildinfo-template
{ CopyToOutputDirectory=PreserveNewest },
}
Content {
etc\NuGet.exe
{ CopyToOutputDirectory=PreserveNewest }
}
ProjectReference {
..\clrplus\Core\Core.csproj
{ Project="{C8506264-EE4F-442C-B2C3-4C0BD4975A2A}"; Name=Core },
..\clrplus\Platform\Platform.csproj
{ Project="{bd607d7f-ad3f-4819-b1e5-f6a01d3cde1c}"; Name=Platform },
..\clrplus\Powershell.Azure\Powershell.Azure.csproj
{ Project="{b172ee7f-7e84-4111-992c-e3a125e194f6}"; Name=Powershell.Azure },
..\clrplus\Powershell.Core\Powershell.Core.csproj
{ Project="{DF38AA27-E211-4A3C-A3AB-ADD32347A25A}"; Name=Powershell.Core },
..\clrplus\Powershell.Provider\Powershell.Provider.csproj
{ Project="{b444dab8-9a7e-4b87-be31-b1a565964786}"; Name=Powershell.Provider },
..\clrplus\Scripting.MsBuild\Scripting.MsBuild.csproj
{ Project="{123467A0-2FCE-43F8-9814-0EB1F6C91234}"; Name=Scripting.MsBuild },
..\clrplus\Scripting\Scripting.csproj
{ Project="{1F5667A0-2FCE-43F8-9814-0EB1F6C9D8DC}"; Name=Scripting },
..\clrplus\Windows.PeBinary\Windows.PeBinary.csproj
{ Project="{B1BD48CC-CAAE-4D32-A011-C77BB23DF156}"; Name=Windows.PeBinary }
}
#Import $(MSBuildToolsPath)\Microsoft.CSharp.targets;
#TryImport $(SolutionDir)\.nuget\NuGet.targets;
PostBuildEvent=@"
set TOOLSDIR=$(SolutionDir)\tools
set NODE_PATH=%25TOOLSDIR%25\node
path = %25TOOLSDIR%25;%25NODE_PATH%25\node_modules\.bin;%25PATH%25
cd $(TargetDir)
if '$(ConfigurationName)' == 'Release' goto RELEASE
:DEBUG
powershell Set-content coapp.psd1 ((Get-Content coapp.psd1).Replace('CoApp.Powershell.Tools.dll','coapp.powershell.dll') )
goto common
:RELEASE
$(SolutionDir)\tools\il-repack.exe /targetplatform:v4 /lib:. /lib:""C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"" /lib:""C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0"" /parallel /union /out:CoApp.Powershell.Tools.dll CoApp.Powershell.dll ClrPlus.Core.dll ClrPlus.Platform.dll ClrPlus.Powershell.Azure.dll ClrPlus.Powershell.Core.dll ClrPlus.Powershell.Provider.dll ClrPlus.Scripting.dll ClrPlus.Scripting.MsBuild.dll ClrPlus.Windows.Api.dll ClrPlus.Windows.PeBinary.dll Microsoft.Cci.Analysis.ControlAndDataFlowGraph.dll Microsoft.Cci.AstsProjectedAsCodeModel.dll Microsoft.Cci.CodeModel.dll Microsoft.Cci.CodeModelToIL.dll Microsoft.Cci.ContractExtractor.dll Microsoft.Cci.CSharpSourceEmitter.dll Microsoft.Cci.ILGenerator.dll Microsoft.Cci.MetadataHelper.dll Microsoft.Cci.MetadataModel.dll Microsoft.Cci.MutableCodeModel.dll Microsoft.Cci.MutableMetadataModel.dll Microsoft.Cci.NewILToCodeModel.dll Microsoft.Cci.PdbReader.dll Microsoft.Cci.PdbWriter.dll Microsoft.Cci.PeReader.dll Microsoft.Cci.PeWriter.dll Microsoft.Cci.ReflectionEmitter.dll Microsoft.Cci.SourceEmitter.dll Microsoft.Cci.SourceModel.dll Microsoft.Threading.Tasks.dll Microsoft.Threading.Tasks.Extensions.dll Microsoft.Threading.Tasks.Extensions.Desktop.dll System.Runtime.dll System.Threading.Tasks.dll Microsoft.WindowsAzure.Configuration.dll Microsoft.WindowsAzure.Storage.dll Microsoft.Deployment.WindowsInstaller.dll CSScriptLibrary.dll Mono.CSharp.dll Ionic.Zip.dll MSBuild.ExtensionPack.dll MSBuild.ExtensionPack.Git.dll MSBuild.ExtensionPack.Loggers.dll MSBuild.ExtensionPack.TaskFactory.PowerShell.dll Sharpen.dll ICSharpCode.SharpZipLib.dll NGit.dll NSch.dll CSharpTest.Net.RpcLibrary.dll Mono.Security.dll Microsoft.Data.Edm.dll Microsoft.Data.OData.dll Microsoft.Data.Services.Client.dll Newtonsoft.Json.dll Interop.COMAdmin.dll Interop.IWshRuntimeLibrary.dll
REM EmbedAssemblyAsResource CoApp.Powershell.Tools.dll ClrPlus.Core.dll ClrPlus.Platform.dll ClrPlus.Powershell.Azure.dll ClrPlus.Powershell.Core.dll ClrPlus.Powershell.Provider.dll ClrPlus.Scripting.dll ClrPlus.Scripting.MsBuild.dll ClrPlus.Windows.Api.dll ClrPlus.Windows.PeBinary.dll Microsoft.Cci.Analysis.ControlAndDataFlowGraph.dll Microsoft.Cci.AstsProjectedAsCodeModel.dll Microsoft.Cci.CodeModel.dll Microsoft.Cci.CodeModelToIL.dll Microsoft.Cci.ContractExtractor.dll Microsoft.Cci.CSharpSourceEmitter.dll Microsoft.Cci.ILGenerator.dll Microsoft.Cci.MetadataHelper.dll Microsoft.Cci.MetadataModel.dll Microsoft.Cci.MutableCodeModel.dll Microsoft.Cci.MutableMetadataModel.dll Microsoft.Cci.NewILToCodeModel.dll Microsoft.Cci.PdbReader.dll Microsoft.Cci.PdbWriter.dll Microsoft.Cci.PeReader.dll Microsoft.Cci.PeWriter.dll Microsoft.Cci.ReflectionEmitter.dll Microsoft.Cci.SourceEmitter.dll Microsoft.Cci.SourceModel.dll Microsoft.Threading.Tasks.dll Microsoft.Threading.Tasks.Extensions.dll Microsoft.Threading.Tasks.Extensions.Desktop.dll System.Runtime.dll System.Threading.Tasks.dll Microsoft.WindowsAzure.Configuration.dll Microsoft.WindowsAzure.Storage.dll Microsoft.Deployment.WindowsInstaller.dll CSScriptLibrary.dll Mono.CSharp.dll Ionic.Zip.dll MSBuild.ExtensionPack.dll MSBuild.ExtensionPack.Git.dll MSBuild.ExtensionPack.Loggers.dll MSBuild.ExtensionPack.TaskFactory.PowerShell.dll Sharpen.dll ICSharpCode.SharpZipLib.dll NGit.dll NSch.dll CSharpTest.Net.RpcLibrary.dll Mono.Security.dll Microsoft.Data.Edm.dll Microsoft.Data.OData.dll Microsoft.Data.Services.Client.dll Newtonsoft.Json.dll
""C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe"" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\CoApp.Powershell.Tools.dll
""C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe"" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\CoApp.psd1
""C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe"" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\SigningService.psm1
""C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe"" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\CoApp.NuGetNativeExtensions.dll
""C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool.exe"" sign /a /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetDir)\CoApp.NuGetNativeMSBuildTasks.dll
:common
copy /y $(TargetDir)\CoApp.NuGetNativeExtensions.* $(TargetDir)\etc
copy /y $(TargetDir)\CoApp.NuGetNativeMSBuildTasks.* $(TargetDir)\etc
copy /y ""$(TargetDir)\etc\CoApp.NuGetNativeMSBuildTasks.dll"" ""$(TargetDir)\etc\CoApp.NuGetNativeMSBuildTasks.dll.orig""";
#TryImport ..\packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets";
if( '$(BclBuildImported)' == '' ) {
EnsureBclBuildImported( BeforeTargets:BeforeBuild ) {
if( !Exists('..\packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets') ) {
Error( Text:"This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=317567.", HelpKeyword:"BCLBUILD2001" );
Error( Text:"The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568.", HelpKeyword:"BCLBUILD2002" );
}
}
}
v 1.23.196
If running Write-NuGetPackage on a .autopkg
file with entries being added to any output file, a warning should be issued if one of these output files is not present at the end of processing.
Using Write-NugetPacakge -GenerateOnly
generates a nuspec file where each include header is listed multiple times.
I've seen files where each header is listed twice and files where there are 3 duplicated listings - this may be related to the way we specify includes:
nuget { nuspec { files { includes: { ... } } } }
generates two duplicate listingsnuget { nuspec { files { nestedInclude: { #destination = ...; ... } } } }
generates three duplicate listingsbut this may be inaccurate - I don't have enough instances yet to tell.
When running Invoke-Build, the following message is seen with extreme frequency in the console output:
WARNING: [0]:Warning [1]:[2]
The following string will be incorrectly parsed by these tools and will be treated as only opening a string literal:
string = @""; // this comment is still part of the string.
// still going. "; // the string is now closed.
Steps to reproduce:
Update-Package PropertySheetBug -reinstall
. Examine output to make sure the package was successfully uninstalled and then installed again.Expected: there is now a "Referenced Packages" section with the "Something" property from the package.
Actual: there is still no such section.
Note that this only seems to happen when keeping the same version number and using the -reinstall
switch (which is common while developing a package).
Because the file paths are absolute, it is very difficult to get use the generated configuration files (as produced by Write-NugetPackage -GenerateOnly
) on
computer or on a build service.
The paths to files to be packaged from the built project into the nuget package should be given as relative to the generated .nuspec file (as per the Nuget specification).
Sometimes when building a big solution, which contains a lot of projects consuming multiple packages (with multiple projects consuming the same package), I get an error such as this one during (usually early in) the build:
1>D:\dev\NugetCache\Boost.1.52.0-a\build\native\Boost.targets(189,5): error : NuGet Error:The process cannot access the file 'D:\dev\NugetCache\Boost.1.52.0-a\build\native\bin\x64\v110_xp\Release\boost_serialization-vc110-mt-1_52.dll' because it is being used by another process.
Most of the time, just aborting the build and trying again resolves the error. I guess it is caused by two separate builds trying to access (copy?) the same file from the same package simultaneously.
I don't know if this is a NuGet issue or a CoApp issue. Unfortunately, I also don't know yet if I can provide some minimal setting that will reproduce this bug, but I'll keep trying to isolate it.
The following autopkg file is never finished processing by the Write-NuGet powershell command. If the @alias and "ForcedIncludeFiles" are commented out and the w32pragma.h line is uncommented, it seems to work just fine.
nuget {
nuspec {
id = ROOT;
version = 5.34.09.0010;
title = ROOT;
authors = {CERN};
owners = {G. Watts};
licenseUrl: "http://root.cern.ch/drupal/content/license";
projectUrl: "http://root.cern.ch";
iconUrl: "http://root.cern.ch/drupal/sites/default/files/rootdrawing-logo.png";
requireLicenseAcceptance: false;
summary: The complete ROOT data analysis toolkit for C++;
description: Contains all libraries needed for the full set of ROOT utilities;
releaseNotes: "Release v5.34.09 of ROOT";
tags: data;
};
files {
include: { "root\include\*"};
[x86,dynamic] {
lib: { "root\lib\*.lib" };
bin: { "root\bin\*.dll" };
};
}
props {
@alias ForcedIncludeFiles = ItemDefinitionGroup.ClCompile.ForcedIncludeFiles;
//ItemDefinitionGroup.ClCompile.ForcedIncludeFiles += "w32pragma.h";
ForcedIncludeFiles += "w32pragma.h";
}
targets {
Defines += "_LATER";
}
}
Since there is a workaround, this bug is low priority.
The title says it all :)
I suppose this is happening because binaries are also routed to the symbols package, but this is probably pointless when no symbols and no source is included.
v 1.23.187
Attempting to use .SetEnvironmentFromTarget
on a previously used target environment results in the environment being declared as invalid. It appears that the actual environment variables are replaced appropriately, but the variable which declares it as valid is set improperly.
eg.
.SetEnvironmentFromTarget.Target = "VC_V110_X64";
.Message.Text = "$(IsEnvironmentValid)"; // true
.SetEnvironmentFromTarget.Target = "VC_V110_X64";
.Message.Text = "$(IsEnvironmentValid)"; // false
CoApp tool version 1 added an AdditionalIncludeDirectories tag to the targets file, allowing the consuming projects to refer to header files packaged.
The current version does not generate that tag.
Previous planning called for nested looping to be possible in the ptk replacement. Currently this fails during parse of the inner loop declaration.
Using latest stable release (or the beta) the Defines keyword in the props or targets section doesn't seem to do anything.
props {
Includes += "c:\users\fork";
Defines += "_LATER";
}
targets {
Includes += "c:\users\fork";
Defines += "_LATER";
}
Neither of these appears in any of the three files generated (the xml or targets file), and a #ifdef _LATER never fires in a compiled project. My include files and my libraries are correctly picked up and installed by nuget when I add the package to my project.
BTW, I went looking for source code to see if I could figure out what I was doing wrong, but was unable to find it for the ClrPlus library on github or CodePlex.
Steps to reproduce:
Expected: there is exactly one setting - "Something", which is indeed used by the package.
Actual: there is one more setting besides "Something", which is "Linkage". It is not used by the package and seems to come out of nowhere.
Weird note: repeat this experiment with the commented line entirely removed. Alternatively, change the description (within the commented line) from "statically dynamically" to something else. Either way, the "Linkage" setting will no longer be generated!
There should be a switch parameter that can be passed to Invoke-Build to write the resultant MSBuild file to the console (where it can optionally be redirected to a file).
Possibly -EmitOnly
?
I added the following line at the top of my autopkg file:
@import "MyFile.autopkg";
Then, although MyFile.autopkg doesn't exist, write-nugetpackage finished successfully without any warnings (though I would even expect a fatal error).
When including DLLs in a package (e.g. using "bin: "), it is useful to be able to specify that these DLLs need to be delay-loaded. This is done by adding the DLL file name (without path) to the DelayLoadDLLs linker option.
Some important notes:
ItemDefinitionGroup.Link.DelayLoadDLLs += "dllname.dll"
to the targets section, under some custom condition. There is room for improvement: it would be better if the DLL file name did not have to be typed in again (too error prone) - I mean, I would expect this to be part of what "bin: " (or an alternative file list) does, when the consumer enables delay loading.Add common alternate aliases for build environments.
eg. VC_V110_WIN32
== VC_V110_X86
, VC_V110_AMD64
== VC_V110_X64
, etc.
The NuGet-Overlay.cmd extension does not allow to install single overlays.
In situations where an overlay identifier is a subset of other overlays (e.g. Win32_v110 is a subset of both Win32_v110_Release and Win32_v110_Debug) all of them will be installed by NuGet-Overlay, when only the first pivot identifier is given.
This is inconsistent with MSBuild Task behavior where a single overlay can be specified and installed directly. There should be a way to specify installation of a single specific overlay in the NativeExtension command, to make it consistent with the MSBuild Task.
Between the "rebuilding All started:..." and "main.cpp" lines there is a very long wait:
NuGet package restore started.
All packages are already installed and there is nothing to restore.
NuGet package restore finished.
1>------ Rebuild All started: Project: SimpleStandaloneROOTPackageTest, Configuration: Debug Win32 ------
1> main.cpp
1> SimpleStandaloneROOTPackageTest.vcxproj -> C:\Users\Gordon\Documents\Code\TestOutCPPPackages\Debug\SimpleStandaloneROOTPackageTest.exe
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
This wait is, I think, due to the build infrastructure getting and downloading the overlay package. It would be great if some line was printed out - especially if it has to go online to fetch the package, it can hang for a while.
My files section looks like this (stripped down but still reproduces the problem):
files {
[${DEBUG_CONFIG}, x86] {
};
};
When I replace ${DEBUG_CONFIG} with Debug
, which is also defined as a environment variable, i.e. echo $env:DEBUG_CONFIG
gives me Debug
, it works. But when using the statement for the environment variable as specified above, I get an error:
Write-NuGetPackage : Invalid characters in expression
In Zeile:1 Zeichen:1
+ Write-NuGetPackage .\toolkit_template.autopkg -Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Write-NuGetPackage], ClrPlusException
+ FullyQualifiedErrorId : ClrPlus.Core.Exceptions.ClrPlusException,CoApp.Powershell.Commands.WriteNuGetPackage
Could this be a newline issue?
Hi,
I tried to upload a simple native package to nuget and the symbols package to symbolsource and then install the package and debug it. But I can't since the symbols are not downloaded from symbol source as if the symbols weren't there but they I checked the repository on symbol source and I confirm. I a bit new to all this stuff so I attached my .autopkg file in case there is something wrong in there.
As anyone succeeded in publishing native package built with coapp symbols to symbol source?
nuget
{
nuspec
{
id = mylib_gdumont;
version : 0.1.0.0;
title: My Package;
authors: Guillaume Dumont;
licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0";
projectUrl: "http://www.ino.ca/";
iconUrl: "https://download-codeplex.sec.s-msft.com/Download?ProjectName=casablanca&DownloadId=630102&Build=20425"
requireLicenseAcceptance:false;
summary:Stupid Package. ;
/* if you need to span several lines you can prefix a string with
an @ symbol (exactly like c# does). */
description: @"This is
description";
releaseNotes: "Initial version.";
copyright: Copyright 2013;
tags: { native, CoApp };
};
files
{
nestedInclude: {
#destination = ${d_include}\mylib;
"mylib\*"
};
source: { src\* };
("x64", "v110", "release,debug") => {
[${0},${1},${2}] {
lib: { .\build\${0}\${1}\${2}\*.lib };
bin: { .\build\${0}\${1}\${2}\*.dll };
symbols: { .\build\${0}\${1}\${2}\*.pdb };
};
};
};
}
I haven't tested the BuildTimePath with anything other than custom build tools, but with them it doesn't seem to work (i.e. it doesn't actually add anything to the PATH envvar).
I created a package with a script such as this one:
files {
[x64] {
tools: "bin2coff64.exe";
};
[x86] {
tools: "bin2coff.exe";
};
};
Then I created a C++ project and added a file to the project (with File Type = "Document"). In the file's properties in the project, I specified that it uses a custom build tool (in "Item Type"), and specified the command line "bin2coff".
The build fails with an error message that "bin2coff" is an unknown command. If I replace it with "echo %PATH%" I see that the folder with the tool really hasn't been added to PATH. If I replace "bin2coff" with a full path it works.
Should remove those unless specifically asked to.
Repro case:
Result is error message from VS:
An error has occurred while saving the edited properties listed below:
One or more values are invalid. The name "Linkage-companyname.libraryname.librarysubname" contains an invalid character ".".
The name with dots is AFAIK recommended way to name the libraries. The workaround is to use "-" or whatever instead of dots in the name.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.