- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 Windows 服务编写一个 nuget 包,这个想法是我的同事可以创建一个 Windows 服务安装该包,并且将为他们设置所有默认日志记录设置、entlib 库和其他内部任务。
除了让我发疯的一件事外,我已经完成了几乎所有工作。
在我的 nuget 目录的内容文件夹中,我有 Service.cs 和 Service.Designer.cs,它们被添加到 objective-c sproj 但它们没有关联。
当我查看 csproj 文件时,我看到:
<Compile Include="Service.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Service.Designer.cs" />
<Compile Include="Service.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Service.Designer.cs">
<DependentUpon>Service.cs</DependentUpon>
</Compile>
最佳答案
经过大约 2 天的 powershell 和 msbuild hell 之后,我终于得到了一个可行的解决方案。见下文。调用 project.Save() 的警告是至关重要的 - 如果没有这个,您将收到“检测到冲突的文件修改”警告。如果您先调用 project.Save() ,您只会在完成后被要求重新加载解决方案。
param($installPath, $toolsPath, $package, $project)
#save the project file first - this commits the changes made by nuget before this script runs.
$project.Save()
#Load the csproj file into an xml object
$xml = [XML] (gc $project.FullName)
#grab the namespace from the project element so your xpath works.
$nsmgr = New-Object System.Xml.XmlNamespaceManager -ArgumentList $xml.NameTable
$nsmgr.AddNamespace('a',$xml.Project.GetAttribute("xmlns"))
#link the service designer to the service.cs
$node = $xml.Project.SelectSingleNode("//a:Compile[@Include='Service.Designer.cs']", $nsmgr)
$depUpon = $xml.CreateElement("DependentUpon", $xml.Project.GetAttribute("xmlns"))
$depUpon.InnerXml = "Service.cs"
$node.AppendChild($depUpon)
#link the settings file to the settings.designer.cs
$settings = $xml.Project.SelectSingleNode("//a:None[@Include='ServiceSettings.settings']", $nsmgr)
$generator = $xml.CreateElement("Generator", $xml.Project.GetAttribute("xmlns"))
$generator.InnerXml = "SettingsSingleFileGenerator"
$settings.AppendChild($generator)
$LastGenOutput = $xml.CreateElement("LastGenOutput", $xml.Project.GetAttribute("xmlns"))
$LastGenOutput.InnerXml = "ServiceSettings.Designer.cs"
$settings.AppendChild($LastGenOutput)
#set the settings designer to be autogen
$settingsDesigner = $xml.Project.SelectSingleNode("//a:Compile[@Include='ServiceSettings.Designer.cs']", $nsmgr)
$autoGen = $xml.CreateElement("AutoGen", $xml.Project.GetAttribute("xmlns"))
$autoGen.InnerXml = "True"
$DesignTimeSharedInput = $xml.CreateElement("DesignTimeSharedInput", $xml.Project.GetAttribute("xmlns"))
$DesignTimeSharedInput.InnerXml = "True"
$AGDependentUpon = $xml.CreateElement("DependentUpon", $xml.Project.GetAttribute("xmlns"))
$AGDependentUpon.InnerXml = "ServiceSettings.settings"
$settingsDesigner.AppendChild($autoGen)
$settingsDesigner.AppendChild($DesignTimeSharedInput)
$settingsDesigner.AppendChild($AGDependentUpon)
#fix up the project installer.
$projectInstallerRes = $xml.Project.SelectSingleNode("//a:EmbeddedResource[@Include='ProjectInstaller.resx']", $nsmgr)
$projectInstallerResDepUpon = $xml.CreateElement("DependentUpon", $xml.Project.GetAttribute("xmlns"))
$projectInstallerResDepUpon.InnerXml = "ProjectInstaller.cs"
$projectInstallerRes.AppendChild($projectInstallerResDepUpon)
$projectInstallerDesigner = $xml.Project.SelectSingleNode("//a:Compile[@Include='ProjectInstaller.Designer.cs']", $nsmgr)
$projectInstallerDesignerDepUpon = $xml.CreateElement("DependentUpon", $xml.Project.GetAttribute("xmlns"))
$projectInstallerDesignerDepUpon.InnerXml = "ProjectInstaller.cs"
$projectInstallerDesigner.AppendChild($projectInstallerDesignerDepUpon)
#delete the bundled program.cs file.
$prog = $xml.Project.SelectSingleNode("//a:Compile[@Include='Program.cs']", $nsmgr)
$prog.SelectSingleNode("..").RemoveChild($prog)
#delete the bundled service1 file
$oldServiceFile = $xml.Project.SelectSingleNode("//a:Compile[@Include='Service1.cs']", $nsmgr)
$oldServiceFile.SelectSingleNode("..").RemoveChild($oldServiceFile)
$oldServiceDesignerFile = $xml.Project.SelectSingleNode("//a:Compile[@Include='Service1.Designer.cs']", $nsmgr)
$oldServiceDesignerFile.SelectSingleNode("..").RemoveChild($oldServiceDesignerFile)
#save the changes.
$xml.Save($project.FullName)
关于powershell - 如何让 nuget (powershell) 在 objective-c sproj 文件中插入 <DependentUpon> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10842567/
我们试图让我们的 C# 应用程序编译和运行 Windows 上的 Visual Studio 10(带有 Microsoft 编译器)和 在 Linux 上使用 gmcs 进行 MonoDevelop
我们正在使用 t4 模板来管理我们项目中的配置。而 web.config 文件是通过 web.tt 文件生成的。在 csproj 文件中生成后,我有以下内容: True True Web
假设我的项目中有一个default.aspx.cs,但我想让它依赖于链接的default.aspx 文件。例如: Default.aspx 这不起作用: Default.aspx
我正在为 Windows 服务编写一个 nuget 包,这个想法是我的同事可以创建一个 Windows 服务安装该包,并且将为他们设置所有默认日志记录设置、entlib 库和其他内部任务。 除了让我发
我是一名优秀的程序员,十分优秀!