我在VS 2017中的.csproj文件中创建了一个构建目标
<Target Name="CopyPackage" AfterTargets="Pack">
<Copy
SourceFiles="$(OutputPath)..\$(PackageId).$(PackageVersion).nupkg"
DestinationFolder="\\myshare\packageshare\"
/>
</Target>
.csproj文件中需要提及“PackageId”和“PackageVersion”才能实现目标。
<PackageId>My Package</PackageId>
<PackageVersion>1.0.0</PackageVersion>
但是我在.nuspec文件中定义了变量。
是否可以从.csproj中的.nuspec文件中访问任何变量?
答案 0 :(得分:1)
如果您已有.nuspec文件并想查询其内容,则可以使用MSBuild XmlPeek
任务:
<Target Name="PrintVersions" AfterTargets="Pack">
<XmlPeek Namespaces="<Namespace Prefix='nu' Uri='http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd'/>"
XmlInputPath="$(NuspecFile)"
Query="/nu:package/nu:metadata/nu:id/text()">
<Output TaskParameter="Result" PropertyName="MyPackageId" />
</XmlPeek>
<XmlPeek Namespaces="<Namespace Prefix='nu' Uri='http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd'/>"
XmlInputPath="$(NuspecFile)"
Query="/nu:package/nu:metadata/nu:version/text()">
<Output TaskParameter="Result" PropertyName="PackageVersion" />
</XmlPeek>
<Message Importance="high" Text="PackageId: $(PackageId)" />
<Message Importance="high" Text="PackageVersion: $(MyPackageVersion)" />
</Target>