小编The*_*nix的帖子

MsBuild条件评估属性包含

尝试创建用于文件类型为的目标的项组 - Filename.CSS.ASPX

<Target Name="Test" AfterTargets="Build">
    <Message Text="Project $(ProjectName) Test PostBuild" Importance="high" />
    <Message Text="%(Content.FullPath)" Condition="%(Extension) == '.aspx' AND %(Filename.Contains(css))" Importance="high" />
</Target>
Run Code Online (Sandbox Code Playgroud)

关于编译;

Error   1   Expected "%(Filename.Contains(css))" to evaluate to a boolean instead of "%(Filename.Contains(css))", in condition "%(Extension) == '.aspx' AND %   (Filename.Contains(css))".  C:\Projects\TestProj\TestProj\TestProj.csproj   58  38  TestProj
Run Code Online (Sandbox Code Playgroud)

有关扩大评估属性的建议吗?

msbuild

17
推荐指数
2
解决办法
1万
查看次数

通过网络创建非对称密钥

我正在尝试使用非对称密钥将程序集添加到SQL2008中的数据库.

我们使用十六进制字符串添加程序集(仅通过sql查询向程序集添加程序集)

USE [master] 
GO

IF NOT EXISTS (SELECT * from sys.asymmetric_keys where name = 'ManagedAsymmetricKey')
 BEGIN
  CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM FILE = 'C:\Managed.dll'
  CREATE LOGIN CLRLogin FROM ASYMMETRIC KEY ManagedAsymmetricKey
  GRANT UNSAFE ASSEMBLY TO CLRLogin
 END
GO

USE [$dbName]
GO
CREATE ASSEMBLY [Managed]
AUTHORIZATION [dbo]
FROM 0x4D5A....
WITH PERMISSION_SET = UNSAFE
GO
Run Code Online (Sandbox Code Playgroud)

这将通过我们收到的网络在本地实例上工作; The certificate, asymmetric key, or private key file does not exist or has invalid format.

我可能错误地认为我应该首先添加密钥,我是否应该添加程序集然后做一些事情CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM ASSEMBLY …

sql-server assemblies sql-server-2008 public-key

6
推荐指数
2
解决办法
3415
查看次数

XSLT Xml 输出正在从结束斜杠中去除空格

XSLT XML 输出格式正在去除结束标记之前的空格

<Import Include="System.Web" />变成<Import Include="System.Web"/>

由于 XSLT 还删除了它所应用的文档中的许多节点,因此我想删除空格,但右斜杠除外。

xslt 被应用于许多 xml ms proj 文件

模板.xsl;

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ms="http://schemas.microsoft.com/developer/msbuild/2003">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    <xsl:strip-space elements="*"/>
    <!--<xsl:preserve-space elements="text"/>-->

    <xsl:template match='@*|node()'>
        <xsl:copy>
            <xsl:apply-templates select='@*|node()'/>
        </xsl:copy>
    </xsl:template>
    ... 
    ...
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

xml xslt xmlstarlet

5
推荐指数
1
解决办法
610
查看次数

使用XSL在第一个位置插入XML节点

如果导入不存在,XSLT将当前插入导入

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    ...
    ...
    <Import Project="$(SolutionDir)BuildShared.targets" />
</Project>
Run Code Online (Sandbox Code Playgroud)

我需要它将它作为第一个节点插入

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="$(SolutionDir)BuildShared.targets" />
    ...
    ...
</Project>
Run Code Online (Sandbox Code Playgroud)

template.xsl;

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ms="http://schemas.microsoft.com/developer/msbuild/2003">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match='@*|node()'>
        <xsl:copy>
            <xsl:apply-templates select='@*|node()'/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="/ms:Project[not(ms:Import[@Project='$(SolutionDir)BuildConfiguration.targets'])]">
        <xsl:copy>          
            <xsl:apply-templates select="node()|@*"/>
            <Import xmlns="http://schemas.microsoft.com/developer/msbuild/2003" Project="$(SolutionDir)BuildConfiguration.targets"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)

交换导入和apply-templates行给出;

runtime error: file template.xsl line 9 element copy

Attribute nodes must be added before any child nodes to an element.

xml xslt xmlstarlet

4
推荐指数
1
解决办法
1917
查看次数