我正在构建一个具有一些未编译的依赖项的库(例如:javascript和css文件)。
我想要的是,当库引用时,在参考时动态地自动创建或复制到使用项目结构中的依赖文件。
通过我的研究,我已经找到了在消费项目中使用前置和后置构建脚本来实现此目的的方法,但我真正想做的是:
同样,如果可以的话,我想避免前置和后置构建脚本 - 在一天结束时,我需要消费者来使用中的js和css文件库,以便显示和执行工作,而无需强制消费者手动移动这些文件。
感谢您提供的任何帮助。
答案 0 :(得分:1)
正如汉斯在评论中所说:只是将它们作为资源嵌入到集会中。对javascript,css和图像这样做非常简单。
在装配项目的AssemblyInfo.cs文件中添加如下行:
[assembly:WebResource(“MyAssembly.Javascript.MyJavascript.js”,“application / javascript”,PerformSubstitution = false)]
要将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()));
请注意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步,效果会很好。