如何将文件从引用的程序集的结构复制到本地结构

时间:2010-12-28 18:46:06

标签: c# model-view-controller reference file-dependancy

我正在构建一个具有一些未编译的依赖项的库(例如:javascript和css文件)。

我想要的是,当库引用时,在参考时动态地自动创建或复制到使用项目结构中的依赖文件。

通过我的研究,我已经找到了在消费项目中使用前置和后置构建脚本来实现此目的的方法,但我真正想做的是:

  • 消费者中,添加对图书馆
  • 的参考
  • 代码执行将所有相关* .js和* .css文件从图书馆的文件夹结构复制到消费者文件夹结构。
  • 如果复制不灵活,我可以通过代码执行来创建消费者中的相关文件。

同样,如果可以的话,我想避免前置和后置构建脚本 - 在一天结束时,我需要消费者来使用中的js和css文件库,以便显示和执行工作,而无需强制消费者手动移动这些文件。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

正如汉斯在评论中所说:只是将它们作为资源嵌入到集会中。对javascript,css和图像这样做非常简单。

  1. 转到文件(js / css / images)上的属性并将其设置为“复制到输出”操作“不复制并将操作构建到嵌入式资源”
  2. 在装配项目的AssemblyInfo.cs文件中添加如下行:

    [assembly:WebResource(“MyAssembly.Javascript.MyJavascript.js”,“application / javascript”,PerformSubstitution = false)]

  3. 要将javascript注入页面(来自用户控件或程序集中的任何内容),请添加以下内容:

    String location = Page.ClientScript.GetWebResourceUrl(this.GetType(),“MyAssembly.Javascript.MyJavascript.js”);

    StringBuilder startup = new StringBuilder(String.Empty); startup.Append(@ “”); startup.Append( “”);

    Page.Header.Controls.Add(new LiteralControl(startup.ToString()));

  4. 请注意WebResource指令的PerformSubstitution参数。这允许您在嵌入的CSS文件中添加以下内容:

    .ribbonGroupLeft {
        width: 3px;
        height: 85px;
        background-image: url(<%=WebResource("MyAssembly.images.RibbonGroupLeft.png") %>);
        background-repeat: no-repeat;
        overflow: hidden;
        margin: 0px 0px 0px 0px;
        padding: 0px 0px 0px 0px;
    }
    

    URL指向位于程序集内的图像。通过将PerformSubstitution设置为true,.net将自动将URL设置为正确的位置。

    作为旁注,所有主要的控制库供应商都采取了上述措施。只要你记得做第1步,效果会很好。